Description
判断一个图是否为一个边通图
Input
n 顶点 (n<=100)
边
Output
1 表示连通
0 表示不边通
Sample Input
5
1 2
2 3
5 4
0 0
Sample Output
0
思路:
从第一个点开始遍历整张图,看看能不能遍历到n个点,可以输出1,否侧输出0。
代码部分:
#include<iostream>
#include<cstdio>
using namespace std;
bool g[101][101],vis[101]; int n,x,y,s,ans;
void dfs(int i){
vis[i]=1; //记录
for (int j=1;j<=n;j++)
if (g[i][j]&&!vis[j]){
//判断是否访问过,再dfs
s++; dfs(j); //遍历图
}
}
int main(){
cin>>n>>x>>y;
while (x&&y)
{
//邻接矩阵
g[x][y]=1;
g[y][x]=1;
cin>>x>>y;
}
for (int i=1;i<=n;i++) if (!vis[i])
{
vis[i]=1;
s=0;dfs(i);
ans=max(ans,s+1);
}
if (ans!=n) cout<<"0"; //不等于n,输出'0'
else cout<<"1"; //否则输出'1'
return 0;
}