您的位置:首页 > 其它

SSL-ZYC 1758 连通图

2018-01-02 21:05 169 查看
题目大意:

判断一个图是否为一个边通图。

思路:

这道题要用到图论。

我用的是深度优先遍历。从一个点开始搜,找到其中一个与它相邻的边,再以找到的边来搜,继续寻找相连的边。把所有可到达的点都搜过了,就退出寻找,看看有没有点没有搜到。如果有,说明这个图不是连通图,否则是连通图。

代码:

#include <cstdio>
using namespace std;
int n,a[101][101],l,p,k;

int dfs(int x)  //深度优先遍历
{
for (int i=1;i<=n;i++)
if (a[i][x]==1)  //如果这个点可以到达
{
a[i][x]=0;
a[x][i]=0;
dfs(i);  //递归
}
}

int main()
{
scanf("%d",&n);
scanf("%d%d",&l,&p);
k=l;
while (l!=0&&p!=0)
{
a[l][p]=1;
a[p][l]=1;
scanf("%d%d",&l,&p);
}
dfs(k);
for (int i=1;i<=n;i++)
for (int j=1;j<=n;j++)
if (a[i][j]==1)  //如果还有点没搜到
{
printf("0");  //不是连通图
return 0;
}
printf("1");  //否则是连通图
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: