| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 9670 人关注过本帖
标题:判断图连通性的问题
只看楼主 加入收藏
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
收藏
得分:0 
回复 8楼 wmf2014
任取两点,有路径可达

全部满足就是连通图了


[fly]存在即是合理[/fly]
2015-12-28 11:14
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
收藏
得分:0 
回复 10楼 不同认为
MGraph G = {0}

会默认把结构体内变量一一赋为0
程序代码:
MGraph G = {0};
G.arcs[0][1].adj = 1;
G.arcs[0][3].adj = 1;
G.arcs[1][0].adj = 1;
G.arcs[1][2].adj = 1;
G.arcs[1][4].adj = 1;
...


这样写

[此贴子已经被作者于2015-12-28 11:19编辑过]



[fly]存在即是合理[/fly]
2015-12-28 11:16
不同认为
Rank: 1
等 级:新手上路
帖 子:93
专家分:3
注 册:2015-11-25
收藏
得分:0 
回复 8楼 wmf2014
就是一个点进行深度优先遍历 看能不能遍历完所有的点  可以的话就连通
2016-01-01 20:08
wmf2014
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:216
帖 子:2039
专家分:11273
注 册:2014-12-6
收藏
得分:0 
回复 13楼 不同认为
其实,还是不明白。楼主所举例的A1怎么就连通,A2就不通呢?要是有图例就好,估计算法是递归。

能编个毛线衣吗?
2016-01-02 09:43
不同认为
Rank: 1
等 级:新手上路
帖 子:93
专家分:3
注 册:2015-11-25
收藏
得分:0 
回复 12楼 azzbcc
#include<stdio.h>  
int visited[5];
typedef struct e
{
    int adj;
}e,A[30][30];
typedef struct
{
    A arcs;
}MGraph;
void DFS(MGraph G,int i,int &a)
{
    int j;
    visited[i]=1;
    a++;
    for(j=0;j<5;j++)
    if(G.arcs[i][j].adj==1&&!visited[j])
         DFS(G,j,a);
}
int DFSTraverse(MGraph G)
{
    int b=0;
    DFS(G,0,b);
    if(b==5)
        return 1;
    else
        return 0;
}
int main()
{
    int i,q,w;
    MGraph G={0};
    MGraph G1={0};
    G.arcs[0][1].adj=1;
    G.arcs[0][3].adj=1;
    G.arcs[1][0].adj=1;
    G.arcs[1][2].adj=1;
    G.arcs[1][4].adj=1;
    G.arcs[2][1].adj=1;
    G.arcs[3][1].adj=1;
    G.arcs[4][1].adj=1;
    G1.arcs[0][3].adj=1;
    G1.arcs[1][2].adj=1;
    G1.arcs[1][4].adj=1;
    G1.arcs[2][1].adj=1;
    G1.arcs[3][0].adj=1;
    G1.arcs[4][1].adj=1;
    for(i=0;i<5;i++)
    visited[i]=0;
    q=DFSTraverse(G);
    w=DFSTraverse(G1);
    if(q==1)
        printf("A1是连通图\n");
    else
        printf("A1不是连通图\n");
    if(w==1)
       printf("A2是连通图\n");
    else
        printf("A2不是连通图\n");
    return 0;
}










#include<stdio.h>  
int visited[5];
typedef struct
{
    int arcs[5][5];
}MGraph;
void DFS(MGraph G,int i,int &a)
{
    int j;
    visited[i]=1;
    a++;
    for(j=0;j<5;j++)
    if(G.arcs[i][j]==1&&!visited[j])
         DFS(G,j,a);
}
int DFSTraverse(MGraph G)
{
    int b=0;
    DFS(G,0,b);
    if(b==5)
        return 1;
    else
        return 0;
}
int main()
{
    int i,q,w;
    MGraph G={0};
    MGraph G1={0};
    G.arcs[0][1]=1;
    G.arcs[0][3]=1;
    G.arcs[1][0]=1;
    G.arcs[1][2]=1;
    G.arcs[1][4]=1;
    G.arcs[2][1]=1;
    G.arcs[3][1]=1;
    G.arcs[4][1]=1;
    G1.arcs[0][3]=1;
    G1.arcs[1][2]=1;
    G1.arcs[1][4]=1;
    G1.arcs[2][1]=1;
    G1.arcs[3][0]=1;
    G1.arcs[4][1]=1;
    for(i=0;i<5;i++)
    visited[i]=0;
    q=DFSTraverse(G);
    w=DFSTraverse(G1);
    if(q==1)
        printf("A1是连通图\n");
    else
        printf("A1不是连通图\n");
    if(w==1)
       printf("A2是连通图\n");
    else
        printf("A2不是连通图\n");
    return 0;
}


这两种写法是不是都可以
2016-01-04 19:23
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
收藏
得分:0 
回复 15楼 不同认为
对。

并没又区别啊


[fly]存在即是合理[/fly]
2016-01-05 09:37
不同认为
Rank: 1
等 级:新手上路
帖 子:93
专家分:3
注 册:2015-11-25
收藏
得分:0 
回复 16楼 azzbcc
感觉书上都定义两个结构体,就是第一个代码,我觉得直接定义一个就好了
2016-01-05 12:10
qiuzhenq
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2016-5-30
收藏
得分:0 
如果不使用领接矩阵,而就使用结点字母和边来表示,应该怎么设计程序?
2016-05-30 17:25
快速回复:判断图连通性的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.013848 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved