【SSL 1758】判断是否为连通图 【图论】

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;
}
发布了37 篇原创文章 · 获赞 24 · 访问量 899

猜你喜欢

转载自blog.csdn.net/dgssl_xhy/article/details/103741194