hdoj 1272小希的迷宫(Runtime Error )
来源:互联网 发布:手机淘宝改差评 编辑:程序博客网 时间:2024/05/29 13:08
初看题的时候, 我想到的是DFS, 但我觉得肯定要超时的, 我搜了个解题报告, 发现用并查集做的, 深受启发,于是用并查集做了。第一次提交WR,修改了一下,提交结果Runtime Error (STACK_OVERFLOW) ,学到给栈置大小#pragma comment(linker, "/STACK:102400000,102400000"), 再次提交WR, ……没有判断迷宫是否连通;再次修改后终于AC了
#include<iostream>#include<cstring>#include<cstdio>using namespace std;#pragma comment(linker, "/STACK:102400000,102400000")int parent[100001];int visited[100001];void Make(int n){for(int i=1; i<=n; i++)parent[i]=i;}int Find(int a){return parent[a]==a?parent[a]:parent[a]=Find(parent[a]);}void Union(int a, int b){parent[a]=b;}int main(){int a, b, x, y, min=0, max=0;int flag, temp, i;while( scanf("%d %d", &a, &b) && (a+b)!=-2){if( a+b==0 ) printf("Yes\n");else{memset(visited+min, 0, max-min+1);flag=1;min=200000;max=0;Make(100000);do{min=min<(a<b?a:b)?min:(a<b?a:b);max=max>(a>b?a:b)?max:(a>b?a:b);visited[a]=1; visited[b]=1;//标记此点存在x=Find(a);y=Find(b);if( x==y ) flag=0;else Union(x, y); }while( scanf("%d %d", &a, &b) && (a+b)!=0 ); if(flag) //没有回路时, 判断迷宫是否连通 { temp=Find(min); for(i=min+1; i<=max; i++) { if(visited[i] && Find(i)!=temp) { flag=0; break; } } } if(flag) printf("Yes\n"); else printf("No\n");}}}
- hdoj 1272小希的迷宫(Runtime Error )
- HDOJ: 1272 小希的迷宫
- HDOJ 1272 小希的迷宫
- hdoj 1272 小希的迷宫
- hdoj 1272 小希的迷宫
- HDOJ 1272 小希的迷宫
- ACM HDOJ 1272 (小希的迷宫)
- HDOJ 1272 小希的迷宫
- hdoj 1272 小希的迷宫
- hdoj 1272 小希的迷宫
- HDOJ 小希的迷宫 1272
- HDOJ 1272--小希的迷宫
- hdoj 1272 小希的迷宫
- HDOJ-1272 小希的迷宫
- hdoj 1272 小希的迷宫
- 【hdoj 1272】小希的迷宫
- HDOJ 1272 小希的迷宫
- HDOJ 1272 小希的迷宫
- 关于Andriod读入CVS或者TXT文件的有关问题
- C++面试宝典2011版
- 内存泄露及检测
- [Linux]:关于cat >file,cat<file<<EOF
- [Linux][BusyBox]:BusyBox 简化嵌入式 Linux 系统
- hdoj 1272小希的迷宫(Runtime Error )
- 深入浅出CGlib-打造无入侵的类代理
- 组合和继承的选择
- Linux常见数据结构之链表
- hdu 3715(2-sat入门题目)2010成都现场赛1007题
- [Linux]:使用cat命令和EOF标识输出多行文件
- 构建Hadoop --- MapReduce 环境
- 今后我来教儿子学数学与语文
- 【Error类型】JavaScript中的原生对象以及Microsoft AJAX Library中的相关扩展