hdu1325 Is It A Tree?(有向图并查集)
来源:互联网 发布:蓝月传奇翅膀数据 编辑:程序博客网 时间:2024/04/27 06:09
本题我相信A不过的好多都是做过小希的迷宫= =,且听我慢慢道来T T
刚开始看,这题基本一样呀,改下输出,果断WA。。。
于是看到是有向图,然后把Union加了个顺序,继续WA。。。
后来看了题解,而且发现题中有言:Every node except the root has exactly one edge pointing to it.(除了根节点入度都为1)
这点上一题没有啊!所以不用再Union里加顺序,多判断一个入度大于1则flag==0,还WA。。。
。。。。。。。。。准备放弃了
突然看到: followed by a pair of negative integers.
输入改成小于0,A。。。心中那个草泥马啊。。。
总之嘛,无向图判断改类型图,一个是只有一个根,一个是无环;有向图则加一个入度小于等于1。记住哈,吃一堑长一智~
#include <stdio.h>#include <cstdio>#include <string.h>#include <cstring>using namespace std;const int N = 100005;int pre[N], vis[N], in[N];void init(){ int i; memset(vis, 0, sizeof(vis)); memset(in, 0, sizeof(in)); for(i = 1; i <= N; i ++) pre[i] = i;}int findd(int x){ int r = x; while(r != pre[r]) r = pre[r]; pre[x] = r; int i = x, j; if(i != r) { j = pre[i]; pre[i] = r; i = j; } return r;}void Union(int x, int y){ int f1, f2; f1 = findd(x); f2 = findd(y); if(f1 != f2) pre[f2] = f1;}int main(){ // freopen("in.txt", "r", stdin); int i, q1, q2, p1, p2, k, flag, Case = 0; while(~scanf("%d%d", &q1, &q2)) { if(q1 < 0 && q2 < 0) break; if(q1 == 0 && q2 == 0) { printf("Case %d is a tree.\n", ++ Case); continue; } flag = 1; k = 0; init(); if(findd(q1) == findd(q2)) flag = 0; Union(q1, q2); vis[q1] = vis[q2] = 1; in[q2] ++; while(~scanf("%d%d", &p1, &p2) && (p1 || p2)) { if(findd(p1) == findd(p2)) flag = 0; Union(p1, p2); vis[p1] = vis[p2] = 1; in[p2] ++; } for(i = 1; i <= N; i ++) { if(vis[i] && (pre[i] == i)) k ++; if(in[i] > 1) flag = 0; } if(k != 1) flag = 0; if(flag == 1) printf("Case %d is a tree.\n", ++ Case); else printf("Case %d is not a tree.\n", ++ Case); } return 0;}
0 0
- hdu1325 Is It A Tree?(有向图并查集)
- HDU1325:Is It A Tree?(并查集)
- hdu1325&&poj1308 Is It A Tree? 基础并查集
- hdu1325 Is It A Tree?并查集
- HDU1325 Is It A Tree? 并查集
- HDU1325 Is It A Tree? 【并查集】
- hdu1325 Is It A Tree?(并查集)
- [并查集] hdu1325 Is it a tree ?
- 并查集 HDU1325-Is It A Tree?
- hdu1325 Is It A Tree? (并查集+森林)
- hdu1325 Is It A Tree?--并查集
- POJ1308/HDU1325/NYOJ129-Is It A Tree?,并查集!
- 并查集模板题 HDU1325 Is It A Tree?
- HDU1325 Is It A Tree? + POJ1308 Is It A Tree?【并查集】
- HDU:1325 Is It A Tree?(并查集+有向图树的判断)
- 杭电 Is It A Tree? 并查集 有向图是否为树
- HDU1325 Is It A Tree? 并查集入门|判树
- hdu1325 Is It A Tree?并差集实现
- 大话设计模式-单例模式
- Python Redis数据结构服务器
- 闪屏页,持续三秒自动进入主页面
- Oracle初学者需要知道的常用数据表如EMP、DEPT、SALGRADE等是如何操作的?图解操作
- pentaho
- hdu1325 Is It A Tree?(有向图并查集)
- linux命令学习之(sed)
- enter键搜索
- C语言求斐波拉切数列第n项
- Maven学习 (三) 使用m2eclipse创建web项目
- [土狗之路]coursera C语言进阶练习题 排队游戏
- OpenCV Bug集合
- 用VC6.0编写Word插件(Office2K、XP、2003)(转)
- Spring-定时任务之Quartz