(并查集)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

时间: 2024-09-30 18:32:39

(并查集)POJ 1308 & HDU 1325的相关文章

Catenyms+欧拉回路/欧拉路+并查集+POJ

Catenyms Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 9617   Accepted: 2524 Description A catenym is a pair of words separated by a period such that the last letter of the first word is the same as the last letter of the second. For e

[并查集] POJ 2236 Wireless Network

Wireless Network Time Limit: 10000MS   Memory Limit: 65536K Total Submissions: 25022   Accepted: 10399 Description An earthquake takes place in Southeast Asia. The ACM (Asia Cooperated Medical team) have set up a wireless network with the lap compute

[并查集] POJ 1182 食物链

食物链 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 66294   Accepted: 19539 Description 动物王国中有三类动物A,B,C,这三类动物的食物链构成了有趣的环形.A吃B, B吃C,C吃A. 现有N个动物,以1-N编号.每个动物都是A,B,C中的一种,但是我们并不知道它到底是哪一种. 有人用两种说法对这N个动物所构成的食物链关系进行描述: 第一种说法是"1 X Y",表示X和Y是同

并查集 POJ 1988 Cube Stacking

题目传送门:    -------->这里<---------- 题目大意: 有标记1-N的方块,初始时一个砖块是一堆.然后进行以下操作 M X Y : 将 X 砖块所在堆 叠到 Y 砖块所在堆上面: C X :数在 X 砖块所在堆中 叠在X砖块下的砖块个数: 1<=N<=30000; 思路: 并查集,每一个砖块堆是一个集合.将每一堆的最上面一块砖设为根,合并时更新 Y 堆的根的 father 和 val (在Y上面的方块数) . 要达到这些目的,需要一个all数组,来记录每一堆里

[并查集] POJ 1611 The Suspects

The Suspects Time Limit: 1000MS   Memory Limit: 20000K Total Submissions: 35206   Accepted: 17097 Description Severe acute respiratory syndrome (SARS), an atypical pneumonia of unknown aetiology, was recognized as a global threat in mid-March 2003. T

(并查集)Travel -- hdu -- 5441(2015 ACM/ICPC Asia Regional Changchun Online )

http://acm.hdu.edu.cn/showproblem.php?pid=5441 Travel Time Limit: 1500/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)Total Submission(s): 2061    Accepted Submission(s): 711 Problem Description Jack likes to travel around the wo

并查集 POJ 1988

#include <cstdio> #define N 30010 int pa[N]; //parent int siz_tree[N]; //size of tree int d[N]; //dist between node and root int Find(int x) { if(pa[x] == x) return x; int t = pa[x]; pa[x] = Find(pa[x]); d[x] += d[t]; return pa[x]; } void Union(int

并查集 POJ 1703 Find them, Catch them

题目传送门 题意:有两个黑帮集团,给出一些两个小弟属于不同的黑帮,询问两个小弟是否关系能确定 分析:首先直接弄两个集合是不好的,正确的做法是类似食物链的做法,关系已确定不属于同一个帮派的x 和 y 使得x 和 y + n属于同一个集合,y 和 x + n属于同一个集合,那么最后只要判断x 和 y 是否在同一个集合就可以了 收获:关系的连通问题 代码: /************************************************ * Author :Running_Time

(并查集) poj 2492

A Bug's Life Time Limit: 10000MS   Memory Limit: 65536K Total Submissions: 29940   Accepted: 9802 Description Background Professor Hopper is researching the sexual behavior of a rare species of bugs. He assumes that they feature two different genders