zoukankan      html  css  js  c++  java
  • poj 1308 Is It A Tree? (最小生成树)

    点击打开链接

    最小生成树。。

    #include"stdio.h"
    int set[1002],v[1003],cnt[1002],flag;
    void fun()
    {
        int i;
        flag=0;
        for(i=1;i<=1000;i++)
        {
            set[i]=i;
            v[i]=0;
            cnt[i]=0;
        }
    }
    int find(int x)
    {
        return set[x]==x?x:find(set[x]);
    }
    int ffun()
    {
        int i,t;
        for(i=1;i<=1000;i++)
        {
            if(v[i])
                cnt[find(i)]++;
        }
        t=0;
        for(i=1;i<=1000;i++)
        {
            if(cnt[i]>1) t++;
        }
        if(t>1) return -1;
        else return 1;
    }
    int main()
    {
        int a,b,num;
        fun();num=0;
        while(scanf("%d%d",&a,&b))
        {
            if(a<0) break;
            if(a==0&&b==0)
            {
                num++;
                if(flag)
                    printf("Case %d is not a tree.\n",num);
                if(!flag)
                {
                    if(ffun()==1) printf("Case %d is a tree.\n",num);
                    else printf("Case %d is not a tree.\n",num);
                }
                fun();
                continue;
            }
            v[a]=v[b]=1;
            if(find(a)==find(b)||find(b)!=b)//这里注意find(b)!=b不能忘,是为了防止
                flag=1;
            else set[b]=a;
        }
        return 0;
    }
    

  • 相关阅读:
    ActionMQ
    解决Session共享
    Linux中使用keepalived高可用工具解决宕机问题
    Linux安装Nginx
    Nginx基础
    多线程(1)
    单例模式1(3)
    创建型模式5种(2)
    7原则(1)
    反射使用案例(2)
  • 原文地址:https://www.cnblogs.com/yyf573462811/p/6365307.html
Copyright © 2011-2022 走看看