zoukankan      html  css  js  c++  java
  • 洛谷1111 修复公路

    题目背景

    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

    #include<bits/stdc++.h>
    using namespace std;
    const int maxn=100005;
    int fa[maxn],n,m,k;
    bool flag;
    struct Edge{
        int st,ed,w;
    }edge[maxn];
    inline int find(int x){
        if(x==fa[x])    return x;
        return fa[x]=find(fa[x]);
    }
    inline int cmp(Edge a,Edge b){
        return a.w<b.w;
    }
    int main(){
        scanf("%d%d",&n,&m);
        for(register int i=1;i<=n;i++)  fa[i]=i;
        for(register int i=1;i<=m;i++){
            int t;
            scanf("%d%d%d",&edge[i].st,&edge[i].ed,&edge[i].w);
            if(edge[i].st>edge[i].ed){
                t=edge[i].ed;
                edge[i].ed=edge[i].st;
                edge[i].st=t;
            }
        }
        sort(1+edge,1+edge+m,cmp);
        for(register int i=1;i<=m;i++){
            int u=find(edge[i].st);
            int v=find(edge[i].ed);
            if(u!=v){
                fa[u]=v;
                k++;
                if(k==n-1){
                    printf("%d",edge[i].w);
                    flag=true;
                    break;
                }
            }   
        }
        if(flag==false) printf("-1");
        return 0;
    }
  • 相关阅读:
    mysql "The user specified as a definer ('root'@'%') does not exist" 问题
    mysql添加Federated引擎问题
    D7经典脚本[multi/handler]
    redhat7.4安装vertica-9.1.0教程
    批量在当前目录下所有的文件中添加指定字段
    mysql 水平分表技术
    linux普通用户提权
    两步完成利用procdump64+mimikatz获取win用户密码
    hibernate中对象的三种状态分析
    Hibernate 入门案例
  • 原文地址:https://www.cnblogs.com/sdfzsyq/p/9677208.html
Copyright © 2011-2022 走看看