POJ2395 Out of Hay【Kruskal】

Out of Hay

Time Limit: 1000MS
Memory Limit: 65536K

Total Submissions: 11656Accepted: 4562

Description

The cows have run out of hay, a horrible event that must be remedied immediately. Bessie intends to visit the other farms to survey their hay situation. There are N (2 <= N <= 2,000) farms (numbered 1..N); Bessie starts at Farm 1. She‘ll traverse some or all
of the M (1 <= M <= 10,000) two-way roads whose length does not exceed 1,000,000,000 that connect the farms. Some farms may be multiply connected with different length roads. All farms are connected one way or another to Farm 1.

Bessie is trying to decide how large a waterskin she will need. She knows that she needs one ounce of water for each unit of length of a road. Since she can get more water at each farm, she‘s only concerned about the length of the longest road. Of course, she
plans her route between farms such that she minimizes the amount of water she must carry.

Help Bessie know the largest amount of water she will ever have to carry: what is the length of longest road she‘ll have to travel between any two farms, presuming(专横的) she chooses routes that minimize that number? This means, of course, that she might backtrack
over a road in order to minimize the length of the longest road she‘ll have to traverse.

Input

* Line 1: Two space-separated integers, N and M.

* Lines 2..1+M: Line i+1 contains three space-separated integers, A_i, B_i, and L_i, describing a road from A_i to B_i of length L_i.

Output

* Line 1: A single integer that is the length of the longest road required to be traversed.

Sample Input

3 3

1 2 23

2 3 1000

1 3 43

Sample Output

43

Hint

OUTPUT DETAILS:

In order to reach farm 2, Bessie travels along a road of length 23. To reach farm 3, Bessie travels along a road of length 43. With capacity 43, she can travel along these roads provided that she
refills her tank to maximum capacity before she starts down a road.

Source

USACO 2005 March Silver

题目大意:1号农场的草被牛吃完了,Bessie必须从其他农场运草回来,总共有N个农场,Bessie要

去其他所有的农场运草回来,他想要使总路程最短并且路线能连接所有的农场。必须要考虑到路上

带的水袋大小。因为水袋大小和路线中距离最长的两个农场之间的路有关,现在Bessie想要求出满

足要求的路线中两个农场之间最长的路距离是多少。

思路:满足要求的路线其实就是最小生成树,路线中两个农场之间最长的路距离就是最小生成树上

最长的边。这样用Kruskal求最小生成树的时候,用Max求出最小生成树上最长的边。

<span style="font-family:Microsoft YaHei;font-size:18px;">#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
using namespace std;
const int MAXN = 2100;
const int MAXM = 40040;
struct EdgeNode
{
    int from;
    int to;
    int w;
}Edges[MAXM];

int father[MAXN];

int find(int x)
{
    if(x != father[x])
        father[x] = find(father[x]);
    return father[x];
}

int cmp(EdgeNode a,EdgeNode b)
{
    return a.w < b.w;
}

void Kruskal(int N,int M)
{
    sort(Edges,Edges+M,cmp);
    int Count = 0, Max = 0;
    for(int i = 0; i < M; ++i)
    {
        int u = find(Edges[i].from);
        int v = find(Edges[i].to);
        if(u != v)
        {
            father[v] = u;
            Count++;
            if(Max < Edges[i].w)
                Max = Edges[i].w;
            if(Count == N-1)
                break;
        }
    }
    cout << Max << endl;
}
int main()
{
    int N,M;
    while(~scanf("%d%d",&N,&M))
    {
        for(int i = 1; i <= N; ++i)
            father[i] = i;
        for(int i = 0; i < M; ++i)
        {
            scanf("%d%d%d",&Edges[i].from, &Edges[i].to, &Edges[i].w);
        }
        Kruskal(N,M);
    }

    return 0;
}
</span>
时间: 2024-09-30 00:52:25

POJ2395 Out of Hay【Kruskal】的相关文章

POJ2395 Out of Hay 【Dijkstra】

Out of Hay Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 11610   Accepted: 4535 Description The cows have run out of hay, a horrible event that must be remedied immediately. Bessie intends to visit the other farms to survey their hay s

hdoj 1863 畅通工程 【最小生成树】+【kruskal】

题意:... 难点:如何判断是不是信息不全:在输入的时候建立并查集,之后判断有几个节点就可以了,剩下的就是kruskal算法. 代码: #include<stdio.h> #include<string.h> #include<algorithm> #define MAXN 105 #define INF 0x3f3f3f3f using std::sort; struct node{ int from; int to; int w; }edges[MAXN*MAXN]

HDU2122 Ice_cream’s world III【Kruskal】

Ice_cream's world III Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 997    Accepted Submission(s): 321 Problem Description ice_cream's world becomes stronger and stronger; every road is built

POJ1679 The Unique MST【Kruskal】【次小生成树】

The Unique MST Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 21304 Accepted: 7537 Description Given a connected undirected graph, tell if its minimum spanning tree is unique. Definition 1 (Spanning Tree): Consider a connected, undirected

POJ2377 Bad Cowtractors【Kruskal】【求最大生成树】

Bad Cowtractors Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 10933 Accepted: 4614 Description Bessie has been hired to build a cheap internet network among Farmer John's N (2 <= N <= 1,000) barns that are conveniently numbered 1..N. FJ

HDU2988 Dark roads【Kruskal】

Dark roads Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 679    Accepted Submission(s): 286 Problem Description Economic times these days are tough, even in Byteland. To reduce the operating

HDU3371 Connect the Cities【Kruskal】

Connect the Cities Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 11152    Accepted Submission(s): 3155 Problem Description In 2100, since the sea level rise, most of the cities disappear. Tho

UVa1395&amp;POJ3522--Slim Span【kruskal】瓶颈生成树

链接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=4141 题意:给出n个顶点,m条边,求一个生成树,使得最大边与最小边的差值最小. 思路:求一个生成树使最大边最小是瓶颈生成树.对于此题,我们枚举每一条边做最小边的情况,找对应的最小生成树的最大边,找出最大边与最小边差值最小的值即可. #include<cstring> #in

poj 2253 Frogger【最小生成树变形】【kruskal】

Frogger Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 30427   Accepted: 9806 Description Freddy Frog is sitting on a stone in the middle of a lake. Suddenly he notices Fiona Frog who is sitting on another stone. He plans to visit her,