小希的迷宫(HDU 1272 并查集判断生成树)
小希的迷宫
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 38870 Accepted Submission(s): 11921

整个文件以两个-1结尾。
6 8 5 3 5 2 6 4
5 6 0 0
8 1 7 3 6 2 8 9 7 5
7 4 7 8 7 6 0 0
3 8 6 8 6 4
5 3 5 6 5 2 0 0
-1 -1
当存在环或者连通分量不为1时则不满足,没想到的是一开始就可以输入0 0,此时就要输出Yes;然后脑残把continue写成了break WA了好几次
在进行路径压缩时如果用return per[x]=find(per[x])会出现栈溢出,但#pragma comment(linker, "/STACK:1024000000,1024000000")可手动扩展。
此代码使用的循环压缩路径
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <set>
using namespace std;
#define Max 100000+10
int per[Max];
int num[Max*];
int flag;
void init()
{
for(int i=;i<Max;i++)
per[i]=i;
return;
}
int find(int a)
{
if(a==per[a])
return a;
int root=a,t=a,tmp;
while(root!=per[root]) //找到根节点
root=per[root];
while(per[t]!=root)
{
tmp=per[t];
per[t]=root;
t=tmp;
}
return root;
}
void unite(int a,int b)
{
a=find(a);
b=find(b);
if(a!=b)
per[a]=b;
else
flag=; //判断成环操作
}
int main()
{
int a,b;
int i,j;
freopen("in.txt","r",stdin);
while()
{
init();
set<int> s;
flag=;
i=;
int k=;
scanf("%d%d",&a,&b);
if(a==-&&b==-)
break;
if(a==&&b==)
{
printf("Yes\n");
continue;
}
unite(a,b);
s.insert(a);
s.insert(b);
while(scanf("%d%d",&a,&b))
{
if(a==&&b==)
break;
unite(a,b);
s.insert(a);
s.insert(b);
}
if(flag==)
{
printf("No\n");
continue;
}
set<int> :: iterator it=s.begin();
for(;it!=s.end();it++)
{
if(per[*it]==*it)
flag--;
}
if(flag==-)
printf("Yes\n");
else
printf("No\n");
}
}
小希的迷宫(HDU 1272 并查集判断生成树)的更多相关文章
- 小希的迷宫 HDU - 1272 (并查集)
思路: 当图中的集合(连通子图)个数为1并且边数等于顶点数-1(即改图恰好为一棵生成树)时,输出Yes. 此题的坑:(1) 如果只输入0 0算作一组数据的话答案应该输出Yes (2) 输入数据可能并不 ...
- POJ 1308&&HDU 1272 并查集判断图
HDU 1272 I - 小希的迷宫 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64 ...
- HDU 1272小希的迷宫(裸并查集,要判断是否构成环,是否是连通图)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1272 小希的迷宫 Time Limit: 2000/1000 MS (Java/Others) ...
- HDU 1272 小希的迷宫(乱搞||并查集)
小希的迷宫 Problem Description 上次Gardon的迷宫城堡小希玩了很久(见Problem B),现在她也想设计一个迷宫让Gardon来走.但是她设计迷宫的思路不一样,首先她认为所有 ...
- hdoj 1272 小希的迷宫 又一个并查集的简单应用
小希的迷宫 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submi ...
- 小希的迷宫(hdu1272 并查集)
http://acm.sdut.edu.cn:8080/vjudge/contest/view.action?cid=259#problem/D Description 上次Gardon的迷宫城堡小希 ...
- hdu 1116 并查集判断欧拉回路通路
判断一些字符串能首尾相连连在一起 并查集求欧拉回路和通路 Sample Input 3 2 acm ibm 3 acm malform mouse 2 ok ok Sample Output The ...
- (并查集)小希的迷宫 --HDU -- 1272
链接: http://acm.hdu.edu.cn/showproblem.php?pid=1272 http://acm.hust.edu.cn/vjudge/contest/view.action ...
- HDU1272 小希的迷宫(基础并查集)
杭电的图论题目列表.共计500题,努力刷吧 AC 64ms #include <iostream> #include <cstdlib> #include <cstdio ...
随机推荐
- 论如何进CSDN博客排名前500
http://www.jtahstu.com/blog/post-71.html 目前该方法并不适用于博客园,显然写博客园的程序员智商要高些.
- Unity3D中使用KiiCloud总结一
Kii Cloud简介 Kii Cloud提供一系列的服务,来帮助你为你的App获取用户,留住用户,以及创造利润.它为移动App提供了用户管理以及快捷安全可扩展的数据存储服务. 现在你可以在短短几分钟 ...
- Linux怎样修改系统时间
修改linux的时间可以使用date指令 修改日期: 时间设定成2009年5月10日的命令如下: #date -s 05/10/2009 修改时间: 将系统时间设定成上午10点18分0秒的命令如下. ...
- 管理Activity 用户在主界面按两次回退退出系统
1:定义一个用于管理Activity的类. /* * 用于管理Activity */ public class SysApp extends Application{ private List< ...
- POJ 2986 A Triangle and a Circle
题意:给定一个三角形,以及一个圆的圆心坐标和半径,求圆和三角形的相交面积. 思路: 用三角剖分,三角形上每个线段都变成这个线段与圆心的三角形,然后算出每个三角形与圆的相交面积,然后根据有向面积的正负累 ...
- try...catch...finally中try块发生的事件顺序
1.try块在发生异常的地方中断程序的执行.2.如果有catch块,就检查该块是否匹配已抛出的异常类型.如果没有catch块,就执行finally块(如果没有catch块,就一定要有finally块) ...
- Android添加横线和竖线分割界面
竖线 <View android:layout_width="1dip" android:layout_height="match_parent ...
- Smarty 变量使用
Smarty的标签都是使用定界符括起来. 默认定界符是{ 和 }, 但定界符可以被改变. 比如说在本手册,我们会假定你在使用默认的定界符. 在Smarty看来,任何在定界符之外的内容,都是静态的,或者 ...
- HDOJ-1019 Least Common Multiple
http://acm.hdu.edu.cn/showproblem.php?pid=1019 题意:给出n个数,求它们的最小公倍数 对于n个数,它们的最小公倍数等于[前n-1个数的最小公倍数和第n个数 ...
- tcp 状态示码 及 三次握手
TCP的几个状态对于我们分析所起的作用. 在TCP层,有个FLAGS字段,这个字段有以下几个标识:SYN, FIN, ACK, PSH, RST, URG. 其中,对于我们日常的分析有用的就是前面的五 ...