小希的迷宫

题目大意:

  详见题目。

问题分析:
  题目其实就是判断给出的点集和边集能否构成一棵树,运用树的性质进行判断即可:edge(边数) = vertice(点数) - 1。需要注意的是当输入为:0 0时,结果应为"Yes"。

代码:

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 int arr[100010];
 4 int main(int argc, char const *argv[])
 5 {
 6     int a, b;
 7     int edge = 0, vertice = 0;
 8     memset(arr, 0, sizeof(arr));
 9     while(cin >> a >> b){
10         if(a == -1 && b == -1)break;
11         else if(a == 0 && b == 0){
12             if(edge == vertice - 1 || edge == 0 && vertice == 0) printf("Yes
");
13             else printf("No
");
14             memset(arr, 0, sizeof(arr));
15             edge = vertice = 0;
16         }
17         else{
18             if(!arr[a]){
19                 arr[a] = 1;
20                 vertice++;
21             }
22             if(!arr[b]){
23                 arr[b] = 1;
24                 vertice++;
25             }
26             edge++;
27         }
28     }
29     return 0;
30 }
原文地址:https://www.cnblogs.com/Vincent-Bryan/p/5554911.html