zoukankan      html  css  js  c++  java
  • 【最小瓶颈生成树】【最小生成树】【kruscal】bzoj1083 [SCOI2005]繁忙的都市

    本意是求最小瓶颈生成树,但是我们可以证明:最小生成树也是最小瓶颈生成树(其实我不会)。数据范围很小,暴力kruscal即可。

     1 #include<cstdio>
     2 #include<algorithm>
     3 using namespace std;
     4 struct Edge{int u,v,w;void Read(){scanf("%d%d%d",&u,&v,&w);}}edges[10001];
     5 bool operator < (const Edge &a,const Edge &b){return a.w<b.w;}
     6 int n,m,fa[301],rank[301],tot;
     7 void init(){for(int i=1;i<=n;i++)fa[i]=i;}
     8 int findroot(int x)
     9 {
    10     if(x==fa[x]) return x;
    11     int rt=findroot(fa[x]);
    12     fa[x]=rt;
    13     return rt;
    14 }
    15 void Union(const int &U,const int &V)
    16 {
    17     if(rank[V]<rank[U]) fa[V]=U;
    18     else
    19       {
    20           fa[U]=V;
    21           if(rank[U]==rank[V]) ++rank[U];
    22       }
    23 }
    24 int main()
    25 {
    26     scanf("%d%d",&n,&m); init();
    27     for(int i=1;i<=m;++i) edges[i].Read();
    28     sort(edges+1,edges+m+1);
    29     for(int i=1;i<=m;i++)
    30       {
    31           int f1=findroot(edges[i].u),f2=findroot(edges[i].v);
    32           if(f1!=f2)
    33             {
    34                 Union(f1,f2);
    35                 tot++;
    36                 if(tot==n-1)
    37                   {
    38                       printf("%d %d
    ",n-1,edges[i].w);
    39                       return 0;
    40                   }
    41             }
    42       }
    43     return 0;
    44 }
  • 相关阅读:
    【转载】微服务,我们需要哪些基础框架?
    Flume多Sink方案修正
    Linux find命令
    Kafka日志及Topic数据清理
    Kafka日志清除策略
    Oracle误删除数据的恢复方法
    Kafka中Topic级别配置
    Kafka server部署配置优化
    配置Kafka集群和zookeeper集群
    改变家目录
  • 原文地址:https://www.cnblogs.com/autsky-jadek/p/4115389.html
Copyright © 2011-2022 走看看