app下载安装官方网站,潍坊专业网站建设怎么收费,wordpress 结构,长春网站快照优化公司有以下坑点#xff1a; 1.结束输入不一定-1#xff0c;题目中的叙述只是说所有权值都为正值。 2.是否构成一棵树不能只判断是否只有一个根节点#xff0c;没有环路#xff0c;而且还需要判断每个节点的入度一定是1#xff0c;不然就不是一棵树。 #xff08;无环路也可用…有以下坑点 1.结束输入不一定-1题目中的叙述只是说所有权值都为正值。 2.是否构成一棵树不能只判断是否只有一个根节点没有环路而且还需要判断每个节点的入度一定是1不然就不是一棵树。 无环路也可用树的性质结点数 边树 1 来取代 1 #include iostream2 #include cstdlib3 #include cstring4 #include cctype5 #include cmath6 #include string7 #include cstdio8 #include algorithm9 #include numeric
10 using namespace std;
11
12 const int maxn 25;
13
14 int father[maxn];
15 int eage[maxn];
16 bool vis[maxn], flag 0;
17 int sum 0;
18
19 int getFather (int x) {
20 while (father[x] ! x) {
21 x father[x];
22 }
23 return x;
24 }
25
26 void Union (int p, int q) {
27 int x getFather (p);
28 int y getFather (q);
29 if (x ! y) {
30 father[y] x;
31 sum ;
32 } else {
33 flag 0;
34 }
35 }
36
37 int main () {
38 int x, y, cur 0;
39 while (cin x y) {
40 if (x 0 y 0) break;
41 if (x 0 y 0) {
42 printf(Case %d is a tree.\n, cur);
43 continue;
44 } else {
45 flag 1;
46 memset(vis, 0, sizeof(vis));
47 memset(eage, 0, sizeof(eage));
48 for (int i 0; i maxn; i) {
49 father[i] i;
50 }
51 vis[x] vis[y] 1;
52 Union(x, y);
53 eage[y] ;
54 while (cin x y) {
55 if (x y 0) break;
56 vis[x] vis[y] 1;
57 Union(x, y);
58 eage[y] ;
59 }
60 sort(eage, eage maxn, greaterint());
61 int xx 0;
62 if (eage[0] 1) flag 0;
63 for (int i 1; i maxn; i) {
64 if (vis[i] father[i] i) {
65 xx ;
66 if (xx 1) {flag 0; break;}
67 }
68 }
69 /*for (int i 1 ; i maxn; i) {
70 cout vis[i] ;
71 }*/
72
73 if (flag) printf(Case %d is a tree.\n, cur);
74 else printf(Case %d is not a tree.\n, cur);
75 }
76 }
77 return 0;
78 } 转载于:https://www.cnblogs.com/Destiny-Gem/p/3861247.html