徐州联赛选拔赛 判断能否构成树

题目链接

思路:每条边对总度的贡献都是2,所以如果形成了一棵树,那么边一定是n-1条,总度就是2(n-1)。先把所有顶点的度加起来,判断是否等于2(n-1),如果不等,那一定就是Impossible了。但是相等就能断定能形成一棵树吗?来看看下面这个图

存在一个度为0的顶点,肯定就不能形成树咯。所以判断一下是否存在度为0的顶点就好了,注意只有一个顶点也是树哦。

AC代码:

 1 #include <cstdio>
 2  
 3 int main()
 4 {
 5     int t, n, v;
 6     scanf("%d", &t);
 7     while (t--)
 8     {
 9         scanf("%d", &n);
10         int sum = 0;
11         bool zero = false;
12         for (int i = 0; i < n; i++)
13         {
14             scanf("%d", &v), sum += v;
15             if (v == 0)
16                 zero = true;
17         }
18         if (n == 1 && zero)
19             puts("Possible");
20         else if (sum == n + n - 2 && !zero)
21             puts("Possible");
22         else
23             puts("Impossible");
24     }
25     return 0;
26 }
原文地址:https://www.cnblogs.com/iRedBean/p/5379692.html