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

X-Plosives

时间:2014-07-27 09:59:12      阅读:282      评论:0      收藏:0      [点我收藏+]

标签:

uvaLive 3644:https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1645

题意::每个化合物都是有两种元素组成的,如果车上存在k个简单化合物时,如果它和已装车的化合物形成易燃物的话,你就应该拒绝装车,否则装车,输出没有装车的个数

题解:一开始以为是与车上所有的化合物,所以直接用数组模拟打了一发。后来发现,是只要和部分化合物在一起,如果满足易暴就不行。白书上是用并查集。发现,这样的转化思想很巧妙。化合物作为一条边连接两个点,然后只要判断所有的连通分量中是否出现环就可以了,直接用并查集判断环。并查集有很多的作用。

bubuko.com,布布扣
 1 #include <iostream>
 2 #include <cstdio>
 3 #include <cstring>
 4 #include <algorithm>
 5 using namespace std;
 6 const int MAXN = 100005;
 7 
 8 int f[MAXN];
 9 
10 int find(int x){
11     if (x != f[x])
12         f[x] = find(f[x]);
13     return f[x];
14 }
15 
16 int main(){
17     int x,y;
18     while (scanf("%d",&x) != EOF){
19         for (int i = 0; i < MAXN; i++)
20             f[i] = i;
21         int ans = 0;
22         while (x != -1){
23             scanf("%d",&y);
24             int fx = find(x),fy = find(y);
25             if (fx == fy)
26                 ans++;
27             else f[fx] = fy;
28             scanf("%d",&x);
29         }
30         printf("%d\n",ans);
31     }
32     return 0;
33 }
View Code

 

X-Plosives

标签:

原文地址:http://www.cnblogs.com/chujian123/p/3870411.html

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