• [LUOGU] P1111 修复公路


    题目背景
    
    A地区在地震过后,连接所有村庄的公路都造成了损坏而无法通车。政府派人修复这些公路。
    
    题目描述
    
    给出A地区的村庄数N,和公路数M,公路是双向的。并告诉你每条公路的连着哪两个村庄,并告诉你什么时候能修完这条公路。问最早什么时候任意两个村庄能够通车,即最早什么时候任意两条村庄都存在至少一条修复完成的道路(可以由多条公路连成一条道路)
    
    输入输出格式
    
    输入格式:
    第1行两个正整数N,M
    
    下面M行,每行3个正整数x, y, t,告诉你这条公路连着x,y两个村庄,在时间t时能修复完成这条公路。
    
    输出格式:
    如果全部公路修复完毕仍然存在两个村庄无法通车,则输出-1,否则输出最早什么时候任意两个村庄能够通车。
    
    输入输出样例
    
    输入样例#1: 复制
    4 4
    1 2 6
    1 3 4
    1 4 5
    4 2 3
    输出样例#1: 复制
    5
    说明
    
    N<=1000,M<=100000
    
    x<=N,y<=N,t<=100000

    注意的几个地方

    1. 无向图
    2. 两倍数组大小
    3. 要求的不是边权之和,是最大的一条边
    //Writer:GhostCai && His Yellow Duck
    
    #include<iostream>
    #include<algorithm>
    #define MAXN 200005
    using namespace std;
    
    int m,n;
    int ans,links;
    
    int fa[MAXN];
    int fnd(int x){
        return (fa[x]==x)?x:fa[x]=fnd(fa[x]);
    }
    void cat(int x,int y){
        x=fnd(x);y=fnd(y);
        if(y!=x) fa[y]=x;
    }
    
    struct Edge{
        int from,to,next,w;
    }e[MAXN];
    int ecnt;
    inline void add(int x,int y,int w){
        e[++ecnt].to = y;
        e[ecnt].w = w;
        e[ecnt].from = x;
    }
    
    bool cmp(Edge x,Edge y){
        return x.w < y.w ;
    }
    
    int main(){
        cin>>n>>m;
        int x,y,w;
        for(int i=1;i<=n;i++) fa[i]=i;
        for(int i=1;i<=m;i++){
            cin>>x>>y>>w;
            add(x,y,w);
            add(y,x,w);
        }
        sort(e+1,e+1+ecnt,cmp);
        for(int i=1;i<=ecnt;i++){
            x=e[i].from ,y=e[i].to ;
            x=fnd(x);y=fnd(y);
            if(x!=y){
                cat(x,y);
    //          ans+=e[i].w ;
                ans=max(ans,e[i].w);//!!
                links++;
            }
        }
    //  cout<<ans<<endl;
        if(links!=n-1) cout<<-1<<endl;
        else cout<<ans<<endl;
        return 0;
    }
    

    本文来自博客园,作者:GhostCai,转载请注明原文链接:https://www.cnblogs.com/ghostcai/p/9247512.html

  • 相关阅读:
    CPU和Memory压力测试方法
    WIN 系统怎么样查看EXpressCache功能
    OGG 源端与目标端 约束不一致
    oracle 查询角色具有的权限
    Mysql 主从一致校验工具------Maatkit工具包
    从库找不到对应的被删除的记录
    python安装包是出现错误解决
    mysql5.7用户密码策略问题
    Centos7上安装docker
    SQL通过身份证获取信息
  • 原文地址:https://www.cnblogs.com/ghostcai/p/9247512.html
Copyright © 2020-2023  润新知