hdu 1325 is it a tree?
2015-01-22 15:27
246 查看
网上一搜全是并查集。。 并查集POJ可以水过,HDU就不行了。。
并查集的话:
迪哥代码
有个坑是只要是输入两个负数就结束,不一定是-1 -1
判断图是否为树:1.是否为连通图 2.是否有环
因为题目给的是从父亲指向儿子,所以直接判断点的入度就可以了
并查集的话:
#include<iostream> #include<cstdio> #include<cstring> using namespace std; int pre[1005]; bool vis[1005]; int num[1005]; bool flag; int x,y,icase=1; void init() { for(int i=0;i<=1000;i++) pre[i]=i; memset(num,0,sizeof(num)); memset(vis,false,sizeof(vis)); flag=false; } int find(int x) { if(pre[x]!=x) pre[x]=find(pre[x]); return pre[x]; } void judge() { for(int i=1;i<=1000;i++) if(vis[i]) num[find(i)]++; int key=0; for(int i=1;i<=1000;i++) if(num[i]>1) key++; if(key>1) flag=true; } int main() { // freopen("in.txt","r",stdin); init(); while(1) { scanf("%d%d",&x,&y); if(x<0 && y<0) break; else if(x==0 && y==0) { judge(); if(flag) printf("Case %d is not a tree.\n",icase++); else printf("Case %d is a tree.\n",icase++); init(); continue; } else { vis[x]=vis[y]=true; if(find(x)==find(y) || pre[y]!=y) flag=true; else pre[y]=x; } } return 0; }
迪哥代码
有个坑是只要是输入两个负数就结束,不一定是-1 -1
判断图是否为树:1.是否为连通图 2.是否有环
因为题目给的是从父亲指向儿子,所以直接判断点的入度就可以了
#include "iostream" #include "memory.h" #include "cstdio" using namespace std; #define MAXN 1111 int fa[MAXN]; int in_degree[MAXN]; bool c[MAXN]; bool ok; int main() { int a,b,T = 1; while (~scanf("%d%d",&a,&b)) { memset(fa,-1,sizeof(fa)); memset(in_degree,0,sizeof(in_degree)); memset(c,0,sizeof(c)); if (a < 0 && b < 0) break; c[a] = 1; c[b] = 1; in_degree[b]++; while (~scanf("%d%d",&a,&b),a+b) { if (a < 0 && b < 0) return 0; in_degree[b]++; c[a] = 1; c[b] = 1; } int re = 0; int ok = 1; for (int i = 0;i < MAXN; ++ i) if (c[i]){ if (in_degree[i] == 0) re ++; if (in_degree[i] > 1) ok = 0; } if (re == 1 && ok) printf("Case %d is a tree.\n",T); else printf("Case %d is not a tree.\n",T); T++; } return 0; }
相关文章推荐
- hdu 1325 Is It A Tree?
- HDU 1325 Is It A Tree?
- hdu 1325--Is It A Tree?
- TOJ 1856 POJ 1308 HDU 1325 Is It A Tree? / 并查集
- HDU-1325-Is It A Tree?
- hdu 1325 Is It A Tree?
- hdu 1325 Is It A Tree?
- hdu 1325 Is It A Tree?
- hdu 1325 is it a tree?
- hdu 1325 Is It A Tree?
- hdu 1325 Is It A Tree?
- hdu 1325 Is It A Tree?
- HDU 1325 Is It A Tree?(并查集)
- hdu 1325 Is It A Tree?
- 【并查集】hdu 1325 Is It A Tree? 或 poj 1308 Is It A Tree?
- HDU 1325 POJ 1308 Is It ATree?(并查集)
- hdu 1325 Is It A Tree?(并查集)
- hdu 1325 Is It A Tree?
- [HDU] 1325 Is It A Tree?
- HDU 1325 Is It A Tree? POJ 1308 Is It A Tree? (并查集+入度,判断一个有向图是树)