SSL_1758【連通圖】

SSL_wj發表於2020-12-26

連通圖

題目

判斷一個圖是否為一個連通圖

Input

n頂點(n<=100)

Output

1表示連通
0表示不邊通

Sample Input

5
1 2
2 3
5 4
0 0

Sample Output

0

解析

水題++
建圖後,從任意一個點處跑一個DFS,看一看有沒有沒被訪問到的點就行了

code:

#include<cstdio>
#include<iostream>
using namespace std;
struct f
{
	int x,y,next;
}a[10010];
int n,x,y,to=0,t[110],head[110];
void add(int xx,int yy)
{
	a[++to].y=yy,a[to].x=xx,a[to].next=head[xx],head[xx]=to;
}
void dfs(int d)
{
	for(int i=head[d];i;i=a[i].next)if(!t[a[i].y])t[a[i].y]=1,dfs(a[i].y);//鄰接表DFS
	return;
}
int main()
{
	scanf("%d",&n);
	while(scanf("%d%d",&x,&y))
	{
		if(x==0&&y==0)break;
		add(x,y);
		add(y,x);
	}//建圖
	dfs(1);//跑DFS
	for(int i=2;i<=n;i++)if(!t[i])//判斷
	{
		printf("0");
		return 0;
	}
	printf("1");
	return 0;
}

相關文章