• Out of Hay.


    题目背景

    奶牛爱干草

    题目描述

    Bessie 计划调查N (2 <= N <= 2,000)个农场的干草情况,它从1号农场出发。农场之间总共有M (1 <= M <= 10,000)条双向道路,所有道路的总长度不超过1,000,000,000。有些农场之间存在着多条道路,所有的农场之间都是连通的。

    Bessie希望计算出该图中最小生成树中的最长边的长度。

    输入格式

    两个整数N和M。

    接下来M行,每行三个用空格隔开的整数A_i, B_i和L_i,表示A_i和 B_i之间有一条道路长度为L_i。

    输出格式

    一个整数,表示最小生成树中的最长边的长度。

    输入输出样例

    输入 #1
    3 3
    1 2 23
    2 3 1000
    1 3 43
    输出 #1
    43



    再来一道Kruskal

    用一个while循环,判断如果有两条边是不连通的,就将它们进行合并,并且判断是不是最大的。


    #include<cstdio>
    #include<iostream>
    #include<algorithm>
    using namespace std;
    int n,m,i,ans,p[20005],f;
    struct pt{
        int pnt1;
        int pnt2;
        int length;
    } a[200100];
    
    bool cmp(pt x, pt y){
        return x.length<y.length;
    }
    
    int ch(int x){
        if(p[x]==x){
            return p[x];
        }
        p[x]=ch(p[x]);
        return p[x];
    }
    int main(){
        scanf("%d%d",&n,&m);
        for(i=1;i<=m;i++){
            cin>>a[i].pnt1>>a[i].pnt2>>a[i].length;
        }
        for(i=1;i<=n;i++){
            p[i]=i;
        }
        sort(a+1,a+m+1,cmp);
        i=0;
        while(f<n-1){
            i++;
            if (ch(a[i].pnt1)!=ch(a[i].pnt2)){
                p[ch(a[i].pnt1)]=ch(a[i].pnt2);
                if (ans<a[i].length){
                    ans=a[i].length;
                }
                f++;
            }
        }
        printf("%d",ans);
    }
  • 相关阅读:
    HYSBZ 3813 奇数国
    HYSBZ 4419 发微博
    HYSBZ 1079 着色方案
    HYSBZ 3506 排序机械臂
    HYSBZ 3224 Tyvj 1728 普通平衡树
    Unity 3D,地形属性
    nginx 的naginx 种包含include关键字
    Redis 出现NOAUTH Authentication required解决方案
    mysql 8.0出现 Public Key Retrieval is not allowed
    修改jar包里的源码时候需要注意的问题
  • 原文地址:https://www.cnblogs.com/hrj1/p/11149937.html
Copyright © 2020-2023  润新知