【dfs】【チェーンテーブル】連通図(ssl 1758)
連通図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を含む)を検索できるかどうかを確認します.
テーマの大意
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
}