#include<stdio.h> #include<string.h> int sum[30]; int num[30][30]={0}; int ok=0; void dfs(int x,int y){ int i; sum[x]=1; for(i=1;i<=20;i++){ if(i==y)continue; if(num[x][i]==1){ if(sum[i]==1){ ok=1; continue; } dfs(i,x); } } } int main(){ int a, b; while(1){ ok = 0; memset(sum, 0, sizeof(sum)); memset(num, 0, sizeof(num)); while(scanf("%d%d",&a,&b)&&(a||b)){ num[a][b]=1; num[b][a]=1; } dfs(2,0); if(ok==0){printf("is a tree. ");} else{printf("is not a tree. ");} } return 0; }
用深搜做的代码,遇见树结构是心有余悸啊,可惜,这题目是用并查集
版权声明:本文为博主原创文章,未经博主允许不得转载。