精华内容
下载资源
问答
  • 在一个具有n个顶点的无向完全中,包含________条边,在一个具有n个顶点 完全中,包含________条边。
  • 用邻接表存储n个顶点m条弧的有向图

    千次阅读 2015-06-30 16:41:29
    例如要存储一下有向图: 当输入6个顶点,8条弧 1 2 1 3 2 4 3 4 3 5 4 1 4 6 5 6 ...用邻接表存储n个顶点m条弧的有向图 */ #include #include #define MAX 10005 typedef struct ArcNo

    例如要存储一下有向图:


    当输入6个顶点,8条弧

    1 2

    1 3

    2 4

    3 4

    3 5

    4 1

    4 6

    5 6


    建立的邻接表的流程图为:







    实现代码:

    /*
    用邻接表存储n个顶点m条弧的有向图
    */
    #include<stdio.h>
    #include<stdlib.h>
    #define MAX 10005
    
    typedef struct ArcNode
    {
        int adjvex;
        struct ArcNode * nextarc;
    }ArcNode;
    
    typedef struct VNode
    {
        int vertex;
        ArcNode * firstarc;
    }VNode;
    
    int n,m;
    VNode V[MAX];
    
    void init()
    {
        ArcNode * p;
        for(int i=1;i<=n;i++)
        {
            V[i].vertex=i;
            V[i].firstarc=NULL;
        }
        for(int i=0;i<m;i++)
        {
            int a,b;
            scanf("%d%d",&a,&b);
            p=(ArcNode*)malloc(sizeof(ArcNode));
            p->adjvex=b;
            p->nextarc=V[a].firstarc;
            V[a].firstarc=p;
        }
    }
    
    int main()
    {
        while(scanf("%d%d",&n,&m)!=EOF&&(n||m))
        {
            init();
            ArcNode * p;
            ArcNode * q;
            for(int i=1;i<=n;i++)
            {
                printf("%d",V[i].vertex);
                p=V[i].firstarc;
                while(p!=NULL)
                {
                    printf(" %d",p->adjvex);
                    q=p;
                    p=p->nextarc;
                    free(q);
                }
                printf("\n");
            }
    
        }
        return 0;
    }
    


     

    展开全文
  • 若将n个顶点e条弧的有向图采用邻接表存储,则拓扑排序算法的时间复杂度是 【源于2016年408真题】 题目说了是有向图,所以弧为e即边为e,用邻接表存储,则一共n个顶点连接e条边,逐个遍历一遍,得到n+e, ...

    若将n个顶点e条弧的有向图采用邻接表存储,则拓扑排序算法的时间复杂度是
    【源于2016年408真题】
    题目说了是有向图,所以弧为e即边为e,用邻接表存储,则一共n个顶点连接e条边,逐个遍历一遍,得到n+e,

    展开全文
  • 数学归纳法: 1顶点为0 2顶点为1 满足1=2*1/2 3顶点以上时 假如n=k-1 k&gt;=3时结论成立 也就是k-1个顶点有 (k-1)*(k-2)/2=k^2/2-3k/2+1边 加入第k顶点时 与前k-1...因此一个具有N个顶点的无向...
    数学归纳法:
    1个顶点为0 2个顶点为1 满足1=2*1/2
    3个顶点以上时 假如n=k-1 k>=3时结论成立
    也就是k-1个顶点有 (k-1)*(k-2)/2=k^2/2-3k/2+1个边
    加入第k个顶点时 与前k-1个顶点产生k-1条边
    则边数一共为k^2/2-3k/2+1+k-1=k^2/2-k/2=k*(k-1)/2
    即当n=k时也满足条件
    因此一个具有N个顶点的无向完全图的边数为n*(n-1)/2 
    展开全文
  • g(n)为n个顶点的非联通 则f(n) + g(n) = h(n) = 2^(n * (n - 1) / 2) 其中h(n)是n个顶点的联图的个数 这样计算 先考虑1所在的连通分量包含哪些顶点 假设该连通分量k个顶点C(n - 1, k - 1)种集合 ...

    设f(n)为所求答案

    g(n)为n个顶点的非联通图

    则f(n) + g(n) = h(n) = 2^(n * (n - 1) / 2)

    其中h(n)是n个顶点的联图的个数


    这样计算

    先考虑1所在的连通分量包含哪些顶点

    假设该连通分量有k个顶点

    就有C(n - 1, k - 1)种集合

    确定点集后,所在的连通分量有f(k)种情况。其他连通分量有 h(n - k)种情况

    因此有递推公式。g(n) = sum{ C(n - 1, k - 1) * f(k) * h(n - k)} 其中k = 1,2...n-1

    注意每次计算出g(n)后立刻算出f(n)


    import java.math.BigInteger;
    import java.util.Scanner;
    
    
    public class Main {
    
    	
    	public static void main(String[] args) {
    		BigInteger two[] = new BigInteger [55];
    		two[0] = BigInteger.ONE;
    		for(int i = 1; i <= 50; i++)
    			two[i] = two[i - 1].multiply(BigInteger.valueOf(2));
    		BigInteger h[] = new BigInteger [55];
    		for(int i = 1; i <= 50; i++){
    			int a = i;
    			int b = i - 1;
    			if(a % 2 == 0) a/= 2;
    			else b /= 2;
    			h[i] = BigInteger.ONE;
    			for(int j = 0; j < a; j++) {
    				h[i] = h[i].multiply(two[b]);
    			}
    		}
    		BigInteger C[][] = new BigInteger[55][55];
    		C[0][0] = BigInteger.ONE;
    		for(int i = 0; i <= 50; i++){
    			C[i][0] = C[i][i] = BigInteger.ONE;
    			for(int j = 1; j < i; j++){
    				C[i][j] = C[i - 1][j].add(C[i - 1][j - 1]);
    			}
    		}
    		BigInteger f[] = new BigInteger[55];
    		BigInteger g[] = new BigInteger[55];
    		f[1] = BigInteger.ONE;
    		for(int i = 2; i <= 50; i++) {
    			g[i] = BigInteger.ZERO;
    			for(int j = 1; j < i; j++) {
    				g[i] = g[i].add(C[i - 1][j - 1].multiply(f[j]).multiply(h[i - j]));
    			}
    			f[i] = h[i].subtract(g[i]);
    		}
    		int n;
    		Scanner cin = new Scanner(System.in);
    		while(cin.hasNext()){
    			n = cin.nextInt();
    			if(n == 0) break;
    			System.out.println(f[n]);
    		}
    	}
    
    }
    


    展开全文
  • 证明:不妨设G是无向连通图(若G为有向图,可忽略边的方向讨论对应的底图)。 设G中顶点为v1, v2, ..., vn。由连通性,必存在与v1相邻的顶点,不妨设其为v2(否则,可重新编号),连接v1与v...
  • 从一个顶点到其余各个顶点最短路径的简介 举例以及详细分析 代码块 测试结果 从一个顶点到其余各个顶点最短路径的简介1.定义概览Dijkstra(迪杰斯特拉)算法是典型的单源最短路径算法,用于计算一节点到其他所有节点...
  • 设G={V,E}是一个具有 n 个顶点有向图,V中的顶点序列
  • PTA上的题目答案绝大多数都是c或者c++的,很少Java的,这是我和一学C的朋友一起写出来的,分享给大家 先给大家看看结果, 代码如下,我也有些不太理解的地方,欢迎大家留言,一起讨论 import java.io....
  • 向图顶点连通度

    千次阅读 2019-09-22 10:04:15
    向图顶点连通度需要用到网络流来求,并且以下定理; Mengerg定理: 无向图顶点连通度K和顶点间的最大独立轨数目之间存在如下关系: ① 当图为完全图时: k=V-1 (V表示图中顶点数) ② 当图为非...
  • n个顶点和e条弧的有向图以邻接矩阵表示法为存储结构,则计算该有向图中某个顶点出度的时间复杂度为( ) A.O(n) B.O(e) C.O(n+e) D.O(n2) ...
  • [图] 有向图的强连通分量-原理

    千次阅读 2018-08-14 14:44:51
    有向图G上,从某个顶点出发沿以【该顶点】为【尾的弧】进行DFS 并按其【所有邻接点】的【搜索都完成(即退出DFS函数)】的顺序将顶点排列起来 实现 对DFS做以下修改 在进入DFSTraverse时首先进行...
  • JAVA代码详解: 有向图中判断欧拉路径和欧拉回路 欧拉路径是图中访问每一条边一次的路径。 欧拉回路是在同一顶点上开始和结束的欧拉路径。 ...如果以下条件为真(成立),则有向图具有欧拉回...
  • 用邻接矩阵表示一个n个顶点有向图时,所需空间为n*n。输入邻接矩阵和查询一遍口需要n*n的时间。当图的边数远小于n*n时,该方法就会很浪费时间和空间,而用邻接表来表示图会更有效。 #include #in
  • Dijkstra算法实现有向图单源最短路径

    千次阅读 2016-10-24 11:53:15
    给定一带权有向图G=(V,E),其中每条边的权都是非负实数。另外,还给定V中的一个顶点,称为源,现在要求解的是从源到其他所有顶点的最短路长度,即所经过路径的权的和,这就是所谓的单源最短路径问题。   #...
  • 已知一有向图G=,顶点集合V={1,2,...,n},我们可能希望确定对所有顶点对i,j ∈ V,图G中事发后都存在一条从i到 j 的路径。G的传递闭包定义为图,其中:    在Θ(n^3)时间内计算出图的传递闭包的一种方法是对E中每...
  • 以邻接表存储的有向图中是否存在有顶点Vi到Vj顶点的路径(i!=j)。 问题描述:试基于图的深度优先搜索策略编写一程序,判别以邻接表存储的有向图中是否存在有顶点Vi到Vj顶点的路径(i!=j)。 输入:顶点个数,...
  • (1)一个具有 N 个顶点,在去掉任意 k-1 个顶点后 (1<=K<=N) 所得的子图仍连通,  而去掉 K 个顶点后的不连通则称 G 是连通的, K 称作 G 的点连通度,记作 K(G) 试设计 (2)相应地如果至少去掉 K 条边使这...
  • 给定n个互不相同的顶点,求它们可以构成的不相同的无向连通数量 http://poj.org/problem?id=1737 2、算法思路 引文思路描述对我来说有点抽象,这里尝试再说细一些(引文:...
  • 图(有向图、无向图)

    万次阅读 2013-12-03 17:02:06
    ⑶均为 (Graph),它若干不同的点 v 1, v 2, …, v n,在其中一些点之间用直线或曲线连接。中的这些点被称为顶点 (vertex)或结点,连接顶点的曲线或直线称为边 (edge)。通常将这种由若干个顶点...
  • 有向图的强连通分量

    千次阅读 2015-04-03 11:10:25
     有向图强连通分量在有向图G中,如果两个顶点vi,vj间(vi>vj)有一条从vi到vj的有向路径,同时还有一条从vj到vi的有向路径,则称两个顶点强连通(strongly connected)。如果有向图G的每两个顶点都强连通,称G是一...
  • 有向图和无向图的相关概念

    千次阅读 2020-04-29 15:44:42
    图的定义:  图在数据结构中是中一对多的关系,一般分为无向图与无向图  常用 邻接矩阵 或者 邻接链表 来...对于图7-1所示的无向图G1和有向图G2,它们的数据结构可以描述为:  G1=(V1,E1), 其中 V1={a,b,c,d...
  • 可分两部分:一是创建顶点信息,可用一一维数组存储;...请输入有向N顶点数和弧数:6 9 请输入6个顶点的值: a b c d e f 请分别输入9条弧的弧尾 弧头 权值(以空格分隔): a b 6 a e 5 a f 9 f c 7...
  • 有向图G中,如果两个顶点间至少存在一条路径,称两个顶点强连通(strongly connected)。如果有向图G的每两个顶点都强连通,称G是一强连通图。非强连通图有向图的极大强连通子图,称为强连通分量(strongly ...
  • 先来分析一下数学问题: 先构造一个图: 0 1 0 1 2 1 2 1 矩阵 A = 1 0 1 1 矩阵A^2 = 1 3 1 2 0 1 0 1 2 1 2 1 ...
  • 有向图的强连通分量即,在有向图G中,如果两个顶点间至少存在一条路径,称两个顶点强连通(strongly connected)。如果有向图G的每两个顶点都强连通,称G是一强连通图。非强连通图有向图的极大强连通子图,称为强...
  • /* ... *All right resvered . *文件名称: Dijkstra算法.cpp ... *——从一个顶点到其余各顶点的最短路径——狄克斯特拉算法 */ 问题: 从一个顶点到其余各顶点的最短路径——狄克斯特拉算法 编程代码:
  • 独立轨:设A、B是无向图G的两个顶点,从A到B的两条没有公共内部顶点的路径互称为独立轨。A到B的独立轨的最大条数,记作P(A,B)。 设A、B是无向图G的两不相邻的顶点,最少要删除多少个顶点才使得A和B不再连通?...
  • 有向图的强连通分支

    千次阅读 2014-11-10 21:22:47
    有向图G中,如果任意两不同的顶点相互可达,则称该有向图是强连通的。有向图G的极大强连通子图称为G的强连通分支。 把有向图分解为强连通分支是深度优先搜索的一经典应用实例。下面介绍如何使用两深度优先...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 19,267
精华内容 7,706
热门标签
关键字:

具有n个顶点的有向图