zoukankan      html  css  js  c++  java
  • UVALive-6540 Fibonacci Tree

    #include<bits/stdc++.h>
    using namespace std;
    int n,m;
    struct edge
    {
       int x;
       int y;
       int len;
    }edges[100005];
    bool up1(edge a,edge b)   // jiegouti anzhao w++++
    {
       return a.len<b.len;
    }
    bool down1(edge a,edge b)   //  jiegouti anzhao w---
    {
       return a.len>b.len;
    }
    int parent[100005];
    int ffind(int x)
    {
       if(x==parent[x]) return x;
       else return parent[x]=ffind(parent[x]);
    }
    int kruskal()
    {
    
        for(int i=1;i<=n;i++)
        {
          parent[i]=i;
        }
        int ans=0;
        int num=0;
        for(int i=1;i<=m;i++)
        {
          int a1=ffind(edges[i].x);
          int a2=ffind(edges[i].y);
          if(a1!=a2)
          {
            ans=ans+edges[i].len;
            parent[a1]=a2;
            num++;
          }
        }
        if(num==n-1)   return ans;
        else return 0;
    }
    int main()
    {
        long long fei[34];
        fei[0]=1; fei[1]=1;
        for(int i=2;i<=33;i++)
        fei[i]=fei[i-1]+fei[i-2];
    
       int T;cin>>T;
       for(int o=1;o<=T;o++)
       {
          cin>>n>>m;
          for(int i=1;i<=m;i++)
          {
            cin>>edges[i].x>>edges[i].y>>edges[i].len;
          }
          printf("Case #%d: ",o);
          sort(edges+1,edges+m+1,up1);
          int min1=kruskal();
          sort(edges+1,edges+m+1,down1);
          int max1=kruskal();
          //cout<<endl;
          //cout<<min1<<"  "<<max1<<endl;
    
          if(min1==0&&max1==0)
          {
             cout<<"No"<<endl;
          }
          else
          {
             int t=0;
             for(int i=0;i<31;i++)
             {
                if(fei[i]<=max1&&fei[i]>=min1)
                {
                  t=1;
                  break;
                }
             }
             if(t==0)
             {
               cout<<"No"<<endl;
             }
             if(t==1)
             {
               cout<<"Yes"<<endl;
             }
          }
       }
       return 0;
    }
    最小生成树&&最大生成树
  • 相关阅读:
    marginleft IE Firefox 浏览器下的不同
    提取HTML代码中文字的C#函数
    分享按钮汇总
    jquery UI集合
    向用户授予对象特权
    oracle中使用聚合函数
    创建对象类型
    jdk1.6.0_01配置系统环境变量
    修改表
    将一个实体映射到多张数据库表
  • 原文地址:https://www.cnblogs.com/Andromeda-Galaxy/p/9509215.html
Copyright © 2011-2022 走看看