题意:
判断一个图是否连通,连通就输出1,否则输出0。
思路:
遍历图统计连通的点数,最后判断连通的点数是否等于总点数。
代码:
#include<cstdio>
#include<cstring>
int a[101],b[101][101],n,x,y,ans;
int min(int x,int y){return x<y?x:y;}
void dfs(int x)//遍历图
{
for (int i=1;i<=n;i++)
{
if (b[i][x]&&a[i]==0)//如果连通且没被统计过就让ans++然后从这个节点遍历
{
a[i]=1;
ans++;
dfs(i);
}
}
}
int main()
{
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
scanf("%d",&n);
do
{
scanf("%d%d",&x,&y);
b[x][y]=1;
b[y][x]=1;
}while (x!=0&&y!=0);
dfs(1);
if (ans==n) printf("1");
else printf("0");
}
611

被折叠的 条评论
为什么被折叠?



