您的位置:首页 > 其它

LA 3644 X-Plosives [并查集]

2017-07-12 08:00 337 查看
考虑到一个集合内的存在与否的特点,想到并查集。

拒绝装车->与已装的化合物形成易燃物。

简单并查集的应用。

#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<set>
#include<queue>
#include<algorithm>
#include<vector>
#include<cstdlib>
#include<cmath>
#include<ctime>
#include<stack>
#define rez(i,x,y) for(int i=x;i>=y;i--)
#define res(i,x,y) for(int i=x;i<=y;i++)
#define INF 2100000000
#define ll long long
#define clr(x)  memset(x,0,sizeof(x))

using namespace std;
const int maxn = 100000+50;
int f[maxn],a,b,tot=0;
int findset(int x){
return f[x]!=x?f[x]=findset(f[x]):x;
}
int main(){
for(int i=1;i<=maxn;i++)f[i]=i;
while(scanf("%d",&a)!=EOF){
if(a==-1){
cout<<tot<<endl;
tot=0;
for(int i=1;i<=maxn;i++)f[i]=i;
}else{
scanf("%d",&b);
a=findset(a),b=findset(b);
if(a==b)++tot;
else f[a]=b;
}
}
return 0;
}


大水题回顾系列。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: