[POJ - 2387] L - Til the Cows Come Home(图论)

L - Til the Cows Come Home

POJ - 2387

Bessie is out in the field and wants to get back to the barn to get as much sleep as possible before Farmer John wakes her for the morning milking. Bessie needs her beauty sleep, so she wants to get back as quickly as possible.

Farmer John‘s field has N (2 <= N <= 1000) landmarks in it, uniquely numbered 1..N. Landmark 1 is the barn; the apple tree grove in which Bessie stands all day is landmark N. Cows travel in the field using T (1 <= T <= 2000) bidirectional cow-trails of various lengths between the landmarks. Bessie is not confident of her navigation ability, so she always stays on a trail from its start to its end once she starts it.

Given the trails between the landmarks, determine the minimum distance Bessie must walk to get back to the barn. It is guaranteed that some such route exists.

Input

* Line 1: Two integers: T and N

* Lines 2..T+1: Each line describes a trail as three space-separated integers. The first two integers are the landmarks between which the trail travels. The third integer is the length of the trail, range 1..100.

Output

* Line 1: A single integer, the minimum distance that Bessie must travel to get from landmark N to landmark 1.

Sample Input

5 51 2 202 3 303 4 204 5 201 5 100

Sample Output

90

Hint

INPUT DETAILS:

There are five landmarks.

OUTPUT DETAILS:

Bessie can get home by following trails 4, 3, 2, and 1.

题目描述:

Bessie要从路标N回到路标1,求最短距离。Bessie对自己骑牛技术不自信,每条路只能走一次不能回头走。(既然最短距离,这个条件就可以忽略了)

分析:

求N到1的最短距离,以N为源点,用dijkstra即可。

坑点:要注意输入的路标间可能会是0,那么如果一开始各路距离初始化为0,就会出错,所以要先把各路距离初始化为无穷大。

代码:

#include <cstdio>
#include <algorithm>
#include <cmath>
#include <cstring>
#define min(x,y) x<y?x:y;
using namespace std;
const int INF=1000000;
int map[1011][1011]={0};
int dis[1011]={0};
bool used[1011];
int N;
int fin()
{
    //找到最小的并判断是否全部使用过
    int k=-1;
    for(int i=1;i<N;i++)
    {
        if(!used[i]&&(k==-1||dis[k]>=dis[i]))
        {
            k=i;
        }
    }
    return k;
}
int main()
{
    int T;
    scanf("%d%d",&T,&N);
    for(int i=1;i<=N;i++)
    {
        for(int j=1;j<=N;j++)
        {
            map[i][j]=INF;
        }
    }
    for(int i=0;i<T;i++)
    {
        int a,b,c;
        scanf("%d %d %d",&a,&b,&c);
        if(a!=b)
        map[a][b]=map[b][a]=min(map[a][b],c);
    }
    for(int i=1;i<=N;i++)
        dis[i]=INF;
    for(int i=1;i<N;i++)
    {
        if(map[N][i]!=INF)
        dis[i]=map[N][i];
    }
?
    int num;
    while((num=fin())!=-1)
    {
        used[num]=true;
        for(int i=1;i<N;i++)
        {
            if(map[num][i]!=INF)
            {
                dis[i]=min(dis[i],dis[num]+map[num][i]);
            }
        }
    }
    printf("%d\n",dis[1]);
    return 0;
}
?
 

原文地址:https://www.cnblogs.com/studyshare777/p/12238344.html

时间: 2024-08-29 13:59:38

[POJ - 2387] L - Til the Cows Come Home(图论)的相关文章

【POJ - 2387】Til the Cows Come Home(最短路径 Dijkstra算法)

Til the Cows Come Home 大奶牛很热爱加班,他和朋友在凌晨一点吃完海底捞后又一个人回公司加班,为了多加班他希望可以找最短的距离回到公司.深圳市里有N个(2 <= N <= 1000)个公交站,编号分别为1..N.深圳是大城市,公交车整天跑跑跑.公交站1是大奶牛的位置,公司所在的位置是N.所有公交站中共有T (1 <= T <= 2000)条双向通道.大奶牛对自己的导航能力不太自信,所以一旦开始,他总是沿着一条路线走到底.大奶牛为了锻炼未来的ACMer,决定让你帮

POJ 2837 Til the Cows Come Home

Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 45515   Accepted: 15434 Description Bessie is out in the field and wants to get back to the barn to get as much sleep as possible before Farmer John wakes her for the morning milking. Bessi

POJ 2387 Til the Cows Come Home (最短路+Dijkstra)

Til the Cows Come Home Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 29550   Accepted: 9935 Description Bessie is out in the field and wants to get back to the barn to get as much sleep as possible before Farmer John wakes her for the

POJ 2387 Til the Cows Come Home dijkstra算法 用邻接表和邻接矩阵

题目如下: Til the Cows Come Home Time Limit: 1000MS        Memory Limit: 65536K Total Submissions: 27726        Accepted: 9353 Description Bessie is out in the field and wants to get back to the barn to get as much sleep as possible before Farmer John wa

poj 2387 Til the Cows Come Home(dijkstra算法)

题目链接:http://poj.org/problem?id=2387 题目大意:起点一定是1,终点给出,然后求出1到所给点的最短路径. 注意的是先输入边,在输入的顶点数,不要弄反哦~~~ 1 #include <iostream> 2 #include <cstdio> 3 using namespace std; 4 int map[2010][2010],Min,node[2010],vis[2010],t,q; 5 const int INF=9999999; 6 7 vo

[2016-04-02][POJ][2387][Til the Cows Come Home]

时间:2016-04-02 10:34:36 星期六 题目编号:[2016-04-02][POJ][2387][Til the Cows Come Home] 题目大意:给定n个节点和t条路,求n到1的最短路长度 分析:跑一次最短路即可 遇到的问题: 据说是多重边,如果是用邻接矩阵的就要更新最小值, 此题是先输入t,再输入n,输入的时候读错,无限WA- #include <queue> #include <cstring> #include <cstdio> using

kuangbin专题专题四 Til the Cows Come Home POJ - 2387

题目链接:https://vjudge.net/problem/POJ-2387 题意:从编号为n的城市到编号为1的城市的最短路. 思路:dijkstra模板题,直接套板子,代码中我会带点注释给初学者看. 1 #include <iostream> 2 #include <cstring> 3 #include <algorithm> 4 #include <cstdio> 5 #include <string> 6 using namespac

POJ 2387 Til the Cows Come Home (Dijkstra)

题目链接:POJ 2387 Description Bessie is out in the field and wants to get back to the barn to get as much sleep as possible before Farmer John wakes her for the morning milking. Bessie needs her beauty sleep, so she wants to get back as quickly as possib

POJ 2387 Til the Cows Come Home(最短路 Dijkstra/spfa)

传送门 Til the Cows Come Home Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 46727   Accepted: 15899 Description Bessie is out in the field and wants to get back to the barn to get as much sleep as possible before Farmer John wakes her for