POJ 1308 并查集的水题
2013-07-22 12:39
211 查看
很水的题,注意判一下森林即可。。。
#include<iostream>
#include<cstdio>
#include<queue>
#define size_num 11200
using namespace std;
queue<int> que;
int p[size_num];
int findp(int x){return p[x]==x?x:p[x]=findp(p[x]);}
int deal()
{
int a,b,f=1;
static int cas=0;
cin>>a>>b;
int root=b;
if(a==-1&&b==-1) return 0;
for(int i=1;i<=10200;i++) p[i]=i;//初始化并查集
while(a&&b)
{
int x=findp(a),y=findp(b);
root=findp(root);
if(x==y) f=0;
p[x]=y;
if(root!=y)
que.push(y);
cin>>a>>b;
}
while(!que.empty())//判森林的步骤
{
root=findp(root);
int temp=que.front();que.pop();
if(root!=findp(temp))
f=0;
}
if(f)
printf("Case %d is a tree.\n",++cas);
else
printf("Case %d is not a tree.\n",++cas);
return 1;
}
int main()
{
while(deal());
return 0;
}
#include<iostream>
#include<cstdio>
#include<queue>
#define size_num 11200
using namespace std;
queue<int> que;
int p[size_num];
int findp(int x){return p[x]==x?x:p[x]=findp(p[x]);}
int deal()
{
int a,b,f=1;
static int cas=0;
cin>>a>>b;
int root=b;
if(a==-1&&b==-1) return 0;
for(int i=1;i<=10200;i++) p[i]=i;//初始化并查集
while(a&&b)
{
int x=findp(a),y=findp(b);
root=findp(root);
if(x==y) f=0;
p[x]=y;
if(root!=y)
que.push(y);
cin>>a>>b;
}
while(!que.empty())//判森林的步骤
{
root=findp(root);
int temp=que.front();que.pop();
if(root!=findp(temp))
f=0;
}
if(f)
printf("Case %d is a tree.\n",++cas);
else
printf("Case %d is not a tree.\n",++cas);
return 1;
}
int main()
{
while(deal());
return 0;
}
相关文章推荐
- 平常水题 - The Suspects POJ-1611(并查集)
- POJ-1308 并查集
- POJ1308 并查集 想想也是醉的 自己水平不够啊
- POJ-1308-Is It A Tree?(并查集)
- 并查集之POJ--1308--Is It A Tree?
- poj 1308 is it a tree?(图的性质||基础并查集) (同hdu 1272 小希的迷宫 )
- poj 1308 Is It A Tree? (并查集)
- poj 1308 Is It A Tree? 并查集
- poj 1308 并查集判断“树”
- poj 1308 - Is It A Tree?(并查集)
- 【解题报告】 POJ 1308 Is It A Tree? 并查集判断一棵树
- POJ 1308 Is It A Tree?【裸的并查集】
- POJ 1308 这还算并查集吗?
- POJ 1308 Is It A Tree? (并查集)
- Poj1308 并查集
- POJ 1308 Is It A Tree? (并查集)
- POJ 1308 并查集
- 【并查集】hdu 1325 Is It A Tree? 或 poj 1308 Is It A Tree?
- POJ 1308 Is It A Tree?再谈 并查集3
- poj 2524宗教信仰 并查集水题