Til the Cows Come Home

来源:互联网 发布:淘宝上海景兰差评 编辑:程序博客网 时间:2024/06/05 20:13
Til the Cows Come Home
Time Limit: 1000MS Memory Limit: 65536KTotal Submissions: 55966 Accepted: 18983

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 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
#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#define N 2010#define MAX 99999999using namespace std ;struct node{    int a,b,w;} f[N];int n,m;void bell(){    int i,j;    int  d[N];    for(int i =1 ; i<=n; i++)        d[i]=MAX;    d[1]=0;    for(i=1; i<n; i++)    {        for(j=1; j<=m; j++)        {            if(d[f[j].b]>d[f[j].a]+f[j].w)                d[f[j].b]= d[f[j].a]+f[j].w;            /*一般是只要这一个判断就可以了的,但是这道题会有重边,比如代码后面的样例,            所以还要加上下面这个判断条件,因为这个可能路径更短*/            if(d[f[j].a]>d[f[j].b]+f[j].w)                d[f[j].a]= d[f[j].b]+f[j].w;        }    }    printf("%d\n",d[n]);}int main(){    int i,a,b,c;    while(cin>>m>>n)    {        for(int i =1; i<=m; i++)        {            cin>>a>>b>>c;            f[i].a=a;            f[i].b=b;            f[i].w=c;        }        bell();    }    return 0 ;}/*注意是先输入边然后再输入点的6 51 2 202 3 303 4 204 5 201 5 1002 1 10答案应该是80*/
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 满16岁怎么办银行卡 电脑最小化后不见了怎么办 满16周岁怎么办银行卡 给儿童办身份证怎么办 当兵前身份证号码不符怎么办 身份证后六位密码x怎么办 借了贷款人死了怎么办 贷款实在还不起怎么办 个人贷款还不起怎么办 珠海派出所办事不公平怎么办 改身份证后学籍怎么办? 威海身份证丢了怎么办 车牌轻微变形了怎么办 车牌照丢一个怎么办 小车车牌掉了怎么办 车牌撞变形了怎么办 车牌烂了一块怎么办 机动车牌照丢了怎么办 汽车想换车牌怎么办 机动车前牌照丢失怎么办 汽车后牌照丢失怎么办 机动车扣分超证怎么办 联通香港无服务怎么办 长乐改区 闽侯怎么办 学校代码查不到怎么办 买票没带身份证怎么办 163邮件发错人了怎么办 pos机未到账怎么办 刷卡迟迟不到账怎么办 农行全渠道升级怎么办 手机输入身份证x怎么办 买房子没有社区怎么办 结婚没钱买房子怎么办 假离婚买房子怎么办? 微信怎么办居住证厦门 厦门没有暂住证怎么办居住证 机票上没有登机口怎么办 德国黑工怎么办居留 夏天吹空调感冒怎么办 拖鞋穿着脚臭怎么办 住墨尔本高层着火怎么办