码迷,mamicode.com
首页 > 其他好文 > 详细

BZOJ1370 [Baltic2003]Gang团伙

时间:2015-01-27 20:13:04      阅读:139      评论:0      收藏:0      [点我收藏+]

标签:

20多天没写题啊。。。连键盘长什么样都忘了额。。。

用这道并查集水题练手2333

 

技术分享
 1 /**************************************************************
 2     Problem: 1370
 3     User: rausen
 4     Language: C++
 5     Result: Accepted
 6     Time:36 ms
 7     Memory:816 kb
 8 ****************************************************************/
 9  
10 #include <cstdio>
11 #include <algorithm>
12  
13 using namespace std;
14 const int N = 1005;
15  
16 int n, m, ans;
17 int fa[N << 1], a[N];
18  
19 int read() {
20   int x = 0;
21   char ch = getchar();
22   while (ch < 0 || 9 < ch)
23     ch = getchar();
24   while (0 <= ch && ch <= 9)
25     (x *= 10) += ch - 0, ch = getchar();
26   return x;
27 }
28  
29 int find_fa(int x) {
30   return x == fa[x] ? x : fa[x] = find_fa(fa[x]);
31 }
32  
33 int main() {
34   int i, x, y;
35   char st[5];
36   n = read(), m = read();
37   for (i = 1; i <= n * 2; ++i) fa[i] = i;
38   for (i = 1; i <= m; ++i) {
39     scanf("%s", st);
40     x = read(), y = read();
41     if (st[0] == F)
42       fa[find_fa(x)] = find_fa(y);
43     else fa[find_fa(x)] = find_fa(y + n), fa[find_fa(y)] = find_fa(x + n);
44   }
45   for (i = 1; i <= n; ++i)
46     a[i] = find_fa(i);
47   sort(a + 1, a + n + 1);
48   for (i = 1; i <= n; ++i)
49     if (a[i] == 1 || a[i] != a[i - 1])
50       ++ans;
51   printf("%d\n", ans);
52   return 0;
53 }
View Code

 

BZOJ1370 [Baltic2003]Gang团伙

标签:

原文地址:http://www.cnblogs.com/rausen/p/4253763.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!