zoukankan      html  css  js  c++  java
  • P1547 Out of Hay

     P1547 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
     1 #include<cstdio>
     2 #include<cstring>
     3 #include<algorithm>
     4 
     5 using namespace std;
     6 
     7 struct Edge{
     8     int a,b,c;    //a b之间有一条长度为c的边 
     9 }e[10010];
    10 int far[2010]; 
    11 int n,m,cnt,ans;
    12 
    13 bool cmp(Edge a,Edge b)
    14 {
    15     return a.c < b.c;
    16 }
    17 int find(int a)
    18 {
    19     if(far[a]!=a) far[a] = find(far[a]);
    20     return far[a];
    21 }
    22 int main()
    23 {
    24     scanf("%d%d",&n,&m);
    25     for(int i=1;i<=m;++i)
    26         scanf("%d%d%d",&e[i].a,&e[i].b,&e[i].c);
    27     for(int i=1;i<=n;++i) far[i] = i;
    28     sort(e+1,e+m+1,cmp);
    29     for(int i=1;i<=m;++i)
    30     {
    31         int aa = find(e[i].a);
    32         int bb = find(e[i].b);
    33         if(aa!=bb)
    34         {
    35             far[aa] = bb;
    36             ans = max(ans,e[i].c); 
    37             cnt++;
    38             if(cnt == n-1) break;
    39         }
    40     }
    41     printf("%d
    ",ans);    
    42     return 0;
    43 }
  • 相关阅读:
    维度穿梭
    演绎与抽象
    幻想的功能
    深层探宝
    内存游戏
    函数内功
    共享与私有的变量
    参数的格式
    功能模拟与功能实现
    【Oracle】基础知识查漏补缺
  • 原文地址:https://www.cnblogs.com/mjtcn/p/6874870.html
Copyright © 2011-2022 走看看