[2016-03-19][UVALive][3644][X-Plosives]
Posted 红洋
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[2016-03-19][UVALive][3644][X-Plosives]相关的知识,希望对你有一定的参考价值。
时间:2016-03-19 12:26:47 星期六
题目编号:[2016-03-19][UVALive][3644][X-Plosives]
题目大意:n个物品如果含有n个元素,就会爆炸,会爆炸的话就不能放入仓库,问有多少个物品不能放入仓库
分析:每次加入一个物品,如果含有新的元素,那么元素的数目始终大于物品的数目1个,如果新的物品含有已经存在的元素,那么一定会爆炸
方法:并查集,已经加入的元素就不加
#include <cstdio>
using namespace std;
#define FOR(x,y,z) for(int (x)=(y);(x)<(z);++(x))
const int maxn = 1E5 + 100;
int fa[maxn];
void ini(){
FOR(i,0,maxn) fa[i] = i;
}
int fnd(int x){
return x == fa[x]?x:fa[x] = fnd(fa[x]);
}
int uni(int x,int y){
x = fnd(x);y = fnd(y);
if(x == y) return 0;
fa[x] = y;
return 1;
}
int main(){
int u,v;
while(~scanf("%d",&u)){
int ans = 0;
ini();
while(~u){
scanf("%d",&v);
if(!uni(u,v)) ++ans;
scanf("%d",&u);
}
printf("%d\n",ans);
}
return 0;
}
以上是关于[2016-03-19][UVALive][3644][X-Plosives]的主要内容,如果未能解决你的问题,请参考以下文章
[2016-03-19][UVALive][3902][Network]
[2016-03-19][UVALive][3027][Corporative Network]
[2016-03-19][UVA][11462][Age Sort]
[2016-03-19][UVA][11549][Calculator Conundrum]