标签:
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 27851 Accepted Submission(s): 8613
首先学习到了两点:
判断一张图是否是一颗树的两个关键点:
#include<stdio.h> #include<set> using namespace std; set<int>S; int main() { freopen ("a.txt" , "r" , stdin ) ; int a,b; while(scanf("%d%d",&a,&b)&&(a!=-1||b!=-1)) { if(a==0&&b==0) printf("Yes\n"); int num=1; S.insert(a); S.insert(b); while(scanf("%d%d",&a,&b)&&(a||b)) { S.insert(a); S.insert(b); num++; } printf ("\n") ; if(S.size()-1==num) printf("Yes\n");//满足边数加一等于顶点数的规律(不考虑重边和指向自身的边) else printf("No\n"); S.clear(); } return 0; }
个人观点:其实只要满足 edges + 1 == points , 就能判断出:
1.只有一棵树;
2.且没有回路;
如果在已知只有一棵树是 , 那么用 kruskal 算法也能快速判断出是否有回路
标签:
原文地址:http://www.cnblogs.com/get-an-AC-everyday/p/4284282.html