【dfs】【チェーンテーブル】連通図(ssl 1758)

7675 ワード

連通図ssl 1758
テーマの大意
n個の点からなる無方向図があり,彼がつながっているかどうかを検出する.
原題
1つの図が1つのエッジ通図であるかどうかを判断する
Input
n頂点(n<=100)
エッジ
Output
1は連通を示す
0は不辺通を表す
Sample Input
5
1 2
2 3
5 4
0 0
Sample Output
0
解題方法
dfs+チェーンテーブルで1から検索し、n点(1を含む)を検索できるかどうかを確認します.
#include
#include
using namespace std;
int s[101],n,x,y,w;
bool p[101];
struct rec
{
	int ss,next;//  
}a[10005];
int dfs(int now)
{
	int t=1;//  
	p[now]=1;//  
	for (int i=s[now];i;i=a[i].next)//            
	  if (!p[a[i].ss]) t+=dfs(a[i].ss);//     , dfs
	return t;
}
int main()
{
	scanf("%d%d%d",&n,&x,&y);
	while (x&&y)
	{
		a[++w].ss=y;//    
		a[w].next=s[x];//         
		s[x]=w;//  
		a[++w].ss=x;//     
		a[w].next=s[y];
		s[y]=w;
		scanf("%d%d",&x,&y);
	}
	if (dfs(1)==n) printf("1");//  n   1
	else printf("0");//    0
}