zoukankan      html  css  js  c++  java
  • HDU Today

    View Code
     1 #include<stdio.h>
    2 #include<string.h>
    3 #include<stdlib.h>
    4 #define MAX 0xfffffff
    5 int map[200][200], visit[200];
    6 long dis[200];
    7 int N, m, s, e;
    8 char name[200][40];
    9
    10 int find(char str[32])
    11 {
    12 int i;
    13 for( i = 1; i <= m; ++i )
    14 {
    15 if(strcmp(name[i], str) == 0)
    16 return i;
    17 }
    18 if( m == 0 || i > m )
    19 {
    20 ++m;
    21 strcpy(name[m], str);
    22 return m;
    23 }
    24 }
    25
    26 void dijkstra( int s, int e )
    27 {
    28 int i, j, rec;
    29 for(i = 1; i <= m; ++i)
    30 {
    31 dis[i] = map[s][i];
    32 visit[i] = i == s ? 1 : 0;
    33 }
    34 for(i = 1; i <= m - 1; ++i)
    35 {
    36 rec = 0;
    37 dis[rec] = MAX;
    38 for(j = 1; j <= m; ++j)
    39 if(!visit[j] && dis[j] < dis[rec])
    40 rec = j;
    41 visit[rec] = 1;
    42 for(j = 1; j <= m; ++j)
    43 if(map[rec][j] < MAX && !visit[j] && map[rec][j] + dis[rec] < dis[j])
    44 dis[j] = map[rec][j] + dis[rec];
    45 }
    46 }
    47
    48 int main()
    49 {
    50
    51 int i, j, a, b, c;
    52 char s1[40], s2[40], start[40], end[40];
    53 scanf("%d", &N);
    54 while(N != -1)
    55 {
    56 m = 0;
    57 for(i = 1; i <= 140; ++i)
    58 {
    59 for(j = 1; j <= 140; ++j)
    60 map[i][j] = MAX;
    61 }
    62 scanf("%s %s", start, end);
    63 for(i = 1; i <= N; ++i)
    64 {
    65 scanf("%s %s %d", s1, s2, &c);
    66 a = find(s1);
    67 b = find(s2);
    68 if(map[a][b] > c)
    69 {
    70 map[a][b] = c;
    71 map[b][a] = c;
    72 }
    73 }
    74 s = find(start);
    75 e = find(end);
    76 if(s == e)
    77 printf("0\n");
    78 else{
    79 dijkstra(s, e);
    80 if(dis[e] != MAX )
    81 printf("%ld\n", dis[e]);
    82 else
    83 printf("-1\n");
    84 }
    85 scanf("%d", &N);
    86 }
    87 return 0;
    88 }

    Description

    经过锦囊相助,海东集团终于度过了危机,从此,HDU的发展就一直顺风顺水,到了2050年,集团已经相当规模了,据说进入了钱江肉丝经济开发区500强。这时候,XHD夫妇也退居了二线,并在风景秀美的诸暨市�浦镇陶姚村买了个房子,开始安度晚年了。 这样住了一段时间,徐总对当地的交通还是不太了解。有时很郁闷,想去一个地方又不知道应该乘什么公交车,在什么地方转车,在什么地方下车(其实徐总自己有车,却一定要与民同乐,这就是徐总的性格)。 徐总经常会问蹩脚的英文问路:“Can you help me?”。看着他那迷茫而又无助的眼神,热心的你能帮帮他吗? 请帮助他用最短的时间到达目的地(假设每一路公交车都只在起点站和终点站停,而且随时都会开)。
     

    Input

    输入数据有多组,每组的第一行是公交车的总数N(0<=N<=10000); 第二行有徐总的所在地start,他的目的地end; 接着有n行,每行有站名s,站名e,以及从s到e的时间整数t(0<t<100)(每个地名是一个长度不超过30的字符串)。 note:一组数据中地名数不会超过150个。 如果N==-1,表示输入结束。
     

    Output

    如果徐总能到达目的地,输出最短的时间;否则,输出“-1”。
     

    Sample Input

    6 xiasha westlake xiasha station 60 xiasha ShoppingCenterofHangZhou 30 station westlake 20 ShoppingCenterofHangZhou supermarket 10 xiasha supermarket 50 supermarket westlake 10 -1
     

    Sample Output

    50 Hint: The best route is: xiasha->ShoppingCenterofHangZhou->supermarket->westlake 虽然偶尔会迷路,但是因为有了你的帮助 **和**从此还是过上了幸福的生活。 ��全剧终��
     
     
     
  • 相关阅读:
    博客搬家了
    Unity Shader学习笔记(一)坐标变换
    cs106a编程方法学作业解答(4)(Hangman)
    cs106a编程方法学 作业解答(4)
    cs106a编程方法学作业解答(3)
    暗黑破坏神2修改盒子公式的方法
    cs106a编程方法学作业解答(2)
    cs106a编程方法学作业解答 (1)
    MAC入手达成
    深圳面试一周记录——.NET(B/S)开发
  • 原文地址:https://www.cnblogs.com/zsj576637357/p/2404997.html
Copyright © 2011-2022 走看看