(并查集)POJ 1308 & HDU 1325
一开始以为两道题是一样的,POJ的过了直接用相同代码把HDU的交了,结果就悲剧了。最后发现HDU的没有考虑入度不能大于一。
题意:用树的定义来 判断吧,无环,n个结点最多有n-1条边,不然就会有环。只有一个入度为0的结点,不存在入度大于1的结点。
思路:并查集.
AC代码:
#include<stdio.h>
#include<string.h>
#define N 100005
int in[N],pre[N],a,b,c[N];
void init()//初始化
{
for(int i=0;i<=100000;i++)
{
in[i]=0;
c[i]=0;
pre[i]=i;
}
}
int find(int x)//路径压缩,提高效率
{
if(x != pre[x])
pre[x] = find(pre[x]);
return pre[x];
}
void mix(int x,int y)
{
x=find(x);
y=find(y);
if(x!=y)
{
if(x>=y)
pre[x]=y;
else
pre[y]=x;
}
}
int main()
{
int flag,i,sum,n=0,qq;
while(scanf("%d%d",&a,&b)!=EOF)
{
if(a<0&&b<0)
break;
flag=0;
qq=1;
n++;
init();
while(a!=0&&b!=0)
{
if(find(a)==find(b))//有祖先节点相同的情况,有的话就是存在环,不是树。
flag=1;
mix(a,b);
in[a]=1;
in[b]=1;
c[b]++;
if(c[b]>1)//入度大于一,不是树
qq=0;
scanf("%d%d",&a,&b);
}
if(flag==1||qq==0)
printf("Case %d is not a tree.\n",n);
else
{
sum=0;
for(i=0;i<=100000;i++)
if(in[i]&&pre[i]==i)
sum++;
if(sum > 1)//多个树根,不是树,是森林
printf("Case %d is not a tree.\n",n);
else
printf("Case %d is a tree.\n",n);
}
}
return 0;
}
(并查集)POJ 1308 & HDU 1325的更多相关文章
- POJ 1308&&HDU 1272 并查集判断图
HDU 1272 I - 小希的迷宫 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64 ...
- hdu - 1829 A Bug's Life (并查集)&&poj - 2492 A Bug's Life && poj 1703 Find them, Catch them
http://acm.hdu.edu.cn/showproblem.php?pid=1829 http://poj.org/problem?id=2492 臭虫有两种性别,并且只有异性相吸,给定n条臭 ...
- [并查集] POJ 1703 Find them, Catch them
Find them, Catch them Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 43132 Accepted: ...
- [并查集] POJ 2236 Wireless Network
Wireless Network Time Limit: 10000MS Memory Limit: 65536K Total Submissions: 25022 Accepted: 103 ...
- [并查集] POJ 1182 食物链
食物链 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 66294 Accepted: 19539 Description ...
- [并查集] POJ 1611 The Suspects
The Suspects Time Limit: 1000MS Memory Limit: 20000K Total Submissions: 35206 Accepted: 17097 De ...
- [ An Ac a Day ^_^ ] [kuangbin带你飞]专题五 并查集 POJ 2236 Wireless Network
题意: 一次地震震坏了所有网点 现在开始修复它们 有N个点 距离为d的网点可以进行通信 O p 代表p点已经修复 S p q 代表询问p q之间是否能够通信 思路: 基础并查集 每次修复一个点重新 ...
- 并查集--poj 2492
Background Professor Hopper is researching the sexual behavior of a rare species of bugs. He assumes ...
- 类似区间计数的种类并查集两题--HDU 3038 & POJ 1733
1.POJ 1733 Parity game Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 5744 Accepted: ...
随机推荐
- Python 第八篇:异常处理、Socket语法、SocketServer实现多并发、进程和线程、线程锁、GIL、Event、信号量、进程间通讯
本节内容: 异常处理.Socket语法.SocketServer实现多并发.进程和线程.线程锁.GIL.Event.信号量.进程间通讯.生产者消费者模型.队列Queue.multiprocess实例 ...
- iTextSharp
iTextSharp 116毫秒处理6G的文件 前言: 有一家印刷企业专为米兰新娘,微微新娘,金夫人这样的影楼印刷婚纱相册.通过一个B2B销售终端软件,把影楼的相片上传到印刷公司的服务器,服务器对 ...
- lokijs
http://lokijs.org/#/ 500,000+ 1.1M ops/s. A fast, in-memory document-oriented datastore for node.js, ...
- windows 下mysql的安装于使用(启动、关闭)
1.下载Windows (x86, 64-bit), ZIP Archive解压: 2.双击在bin目录里的mysqld.exe dos窗体一闪就没了,这时netstat -an发现port3306已 ...
- 有关oppo蝴蝶解锁的三D技术
oppo手机的界面设计也是很漂亮的.在很多界面中使用了3D技术塑造出了大量华丽的效果.在蝴蝶解锁中使用了两个对称的三D变幻,宛如蝴蝶翅膀上美丽的花纹.在受到用户点击后,随风缓慢上下扇动,充满浪漫的动感 ...
- hdu 1166 敌兵布阵(线段树,树状数组)
http://acm.hdu.edu.cn/showproblem.php?pid=1166 直接线段树模板 AC代码: #include<iostream> #include<cs ...
- easyUI相关知识
$("#sportGroupInfoDialog").dialog("open");//打开一个对话框,设置这个对话框的的布局方式 $('#sportGroup ...
- IE 下使用firebug
javascript :var firebug=document.createElement('script');firebug.setAttribute('src','http://getfireb ...
- MongoDB使用手册
一.安装包下载地址 http://www.mongodb.org/downloads 二.服务器端使用 LINUX版本: ①用tar -zxvf mongodb-linux-x86_64-1.2.4. ...
- 调用 FragmentPagerAdapter.notifyDataSetChanged() 并不能更新其 Fragment之我的解决方法
private class ViewPagerAdapter extends FragmentPagerAdapter { FragmentManager mFragmentManager; ...