HDU 1272 小希的迷宫

https://vjudge.net/problem/HDU-1272

题意:

上次Gardon的迷宫城堡小希玩了很久(见Problem B),现在她也想设计一个迷宫让Gardon来走。但是她设计迷宫的思路不一样,首先她认为所有的通道都应该是双向连通的,就是说如果有一个通道连通了房间A和B,那么既可以通过它从房间A走到房间B,也可以通过它从房间B走到房间A,为了提高难度,小希希望任意两个房间有且仅有一条路径可以相通(除非走了回头路)。小希现在把她的设计图给你,让你帮忙判断她的设计图是否符合她的设计思路。

 

思路:

并查集。最后要判断是否成环。这很简单,不成环的条件就是顶点数=边数+1

需要注意的是如果一开始直接输入两个0,是要输出Yes的。

 1 #include<iostream> 
 2 #include<cstring>
 3 using namespace std;
 4 
 5 const int maxn = 100000 + 5;
 6 
 7 int p[maxn];
 8 int vis[maxn];
 9 
10 int find(int x)
11 {
12     return p[x] == x ? x : find(p[x]);
13 }
14 
15 void Unions(int x, int y)
16 {
17     p[x] = y;
18 }
19 
20 int main()
21 {
22     freopen("D:\\txt.txt", "r", stdin);
23     int a, b;
24     while (cin >> a >> b)
25     {
26         int cnt = 0, num = 0;
27         memset(vis, 0, sizeof(vis));
28         if (a == -1 && b == -1)  break;
29         if (a == 0 && b == 0)
30         {
31             cout << "Yes" << endl;
32             continue;
33         }
34         if (!vis[a])
35         {
36             vis[a] = 1;
37             p[a] = a;
38             cnt++;
39         }
40         if (!vis[b])
41         {
42             vis[b] = 1;
43             p[b] = b;
44             cnt++;
45         }
46         int x = find(a);
47         int y = find(b);
48         {
49             Unions(a, b);
50         }
51         num++;
52         while (cin >> a >> b)
53         {
54             if (a == 0 && b == 0)  break;
55             if (!vis[a])
56             {
57                 vis[a] = 1;
58                 p[a] = a;
59                 cnt++;
60             }
61             if (!vis[b])
62             {
63                 vis[b] = 1;
64                 p[b] = b;
65                 cnt++;
66             }
67             int x = find(a);
68             int y = find(b);
69             {
70                 Unions(a, b);
71             }
72             num++;
73         }
74         if (cnt == num + 1)     cout << "Yes" << endl;
75         else cout << "No" << endl;
76     }
77     return 0;
78 }

 

posted @ 2017-02-10 15:25  Kayden_Cheung  阅读(238)  评论(0编辑  收藏  举报
//目录