您的位置:首页 > 运维架构

LA 3644 X-Plosives (Europe - Southwestern - 2006/2007)

2013-09-24 21:43 441 查看
题目地址: https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1645

思路: 图论模型化,种类数就是点,对数就是边, 要求始终不存在子图使点数等于边数,就是不允许有环,使用并查集即可。

代码:

#include<iostream>
#include<cstdio>
#define N 100001
using namespace std;

int p[N+5];

int find(int x)
{
return   p[x]==x?x:p[x]=find(p[x]);

}

void init()
{
for(int i=0;i<N;i++)
{
p[i]=i;
}
}
int main()
{
int a,b;

init();
int count=0;
while(scanf("%d",&a)==1)
{

if(a==-1)
{
cout<<count<<endl;
count=0;
init();

}
else scanf("%d",&b);

int x=find(a);
int y=find(b);

if(x!=y)   p[x]=y;
else count++;

}

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