思路:每条边对总度的贡献都是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 }
时间: 2024-10-05 23:48:08