#include<stdio.h>

#include<string.h>

#define N 200

#define inf 999999999999

__int64 map[N][N],dis[N];

char s[N][40];

void dijkstra(__int64 s,__int64 t,__int64 n) {

    __int64 visit[N],u,min,i,j;

    for(i=0;i<n;i++) {

        visit[i]=1;

        dis[i]=map[s][i];

    }

    visit[s]=0;

    for(i=0;i<n-1;i++) {

        min=inf;

        for(j=0;j<n;j++)

            if(min>dis[j]&&visit[j]) {

                min=dis[j];

                u=j;

            }

            visit[u]=0;

            for(j=0;j<n;j++)

                if(visit[j]&&map[u][j]<inf) {

                    if(dis[j]>dis[u]+map[u][j])

                        dis[j]=dis[u]+map[u][j];

                }

                }

}

int main() {

    __int64 t,n,m,count,kai,jie,i,j;

    char start[40],end[40],str[40],str1[40];

    while(scanf("%I64d",&n),n!=-1) {

        for(i=0;i<=160;i++) {

            dis[i]=inf;

            for(j=0;j<=160;j++)

                map[i][j]=i==j?0:inf;

        }

        scanf("%s%s",start,end);

        count=0;

        while(n--) {

            scanf("%s%s%I64d",str,str1,&t);

             for(i=0;i<count;i++)

                 if(strcmp(s[i],str)==0) {

                     kai=i;

                     break;

                 }

                 if(i==count) {

                     strcpy(s[count],str);

                     kai=count;

                     count++;

                 }

                 for(i=0;i<count;i++)

                     if(strcmp(s[i],str1)==0) {

                         jie=i;

                         break;

                     }

                     if(i==count) {

                         strcpy(s[count],str1);

                         jie=count;

count++;

                     }

                     map[kai][jie]=map[jie][kai]=t;

        }

kai=-1;

jie=-1;

        for(i=0;i<count;i++) {

            if(strcmp(s[i],start)==0)

                kai=i;

            if(strcmp(s[i],end)==0)

                jie=i;

        }

if(kai==-1||jie==-1) {//一定是||刚开始时&&一直错

printf("-1\n");

continue;

}

        dijkstra(kai,jie,count);

        if(dis[jie]<inf)

        printf("%I64d\n",dis[jie]);

        else

            printf("-1\n");

    }

    return 0;

}

hdu 2112的更多相关文章

  1. hdu 2112 (最短路+map)

    链接:http://acm.hdu.edu.cn/showproblem.php?pid=2112 HDU Today Time Limit: 15000/5000 MS (Java/Others)  ...

  2. hdu 2112 HDU Today

    题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=2112 HDU Today Description 经过锦囊相助,海东集团终于度过了危机,从此,HDU的 ...

  3. HDU 2112 HDU Today(Dijkstra)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2112 HDU Today Time Limit: 15000/5000 MS (Java/Others ...

  4. HDU Today hdu 2112

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=2112 文章末有一些相应的测试数据供参考. 此题就是一个求最短路的问题,只不过现在的顶点名称变成了字符串而不 ...

  5. hdu 2112 HDU Today (floyd算法)

    这道题貌似在原来学长给我们的搞的小比赛中出过! 这次又让我遇到,果断拿下! 不过方法很蠢,跑了1000多ms,虽然要求5000ms以内! 题目就是给你一些位置之间的距离,然后再让你求特定的两点之间的距 ...

  6. 【hdu 2112】 HDU Today ( 最短路 Dijkstra)(map)

    http://acm.hdu.edu.cn/showproblem.php?pid=2112 这道题给了一个将字符串与int对应的思路,就是使用map 这道题答案对了,但是没有AC,我也不知道为什么. ...

  7. HDU 2112 Today(Dijkstra+map)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2112 题目大意: 经过锦囊相助,海东集团终于度过了危机,从此,HDU的发展就一直顺风顺水,到了2050 ...

  8. hdu 2112 HDU Today (最短路)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2112 题目大意:给出起点和终点,然后算出最短的路. 不过有好多细节要注意: (1)起始点和终止点相等的 ...

  9. hdu 2112 HDU Today 解题报告

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2112 题目意思:又是求最短路的,不过结合埋字符串来考查. 受之前1004 Let the Balloo ...

  10. HDU 2112 HDU Today (Dijkstra算法)

    HDU Today Time Limit: 15000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total ...

随机推荐

  1. Angularjs中表格的增删改查

    在一个管理系统中,不外乎都是增删改查.现在比如有个表格,我想修改当前行的数据,如下图所示 一点击修改的时候,当前页面我需要修改的数据,变成能修改的样式,点击保存能保存当前修改的数据,如下图所示 需要引 ...

  2. mac及windows下安装ss实现***

    官网下载shadowsock(mac/windows都是下面地址,页面会根据当前系统自动判断所下载的包) https://sourceforge.net/projects/shadowsocksgui ...

  3. js由浅入深理解

    隐式转换 + - num - 0 把num转换成number: num + "" 把num转换成字符串: ------------------------------------- ...

  4. (转)Spring管理的Bean的生命周期

    http://blog.csdn.net/yerenyuan_pku/article/details/52834011 bean的初始化时机 前面讲解了Spring容器管理的bean的作用域.接着我们 ...

  5. 用Vue的方式实现复选框

    var borrVm = new Vue({ el: "#WingApp", data: { returnBookList:[], checked:"", ch ...

  6. 20道必须掌握的C++面试题

    20道必须掌握的C++面试题 在面试C++方面的工作时,经常会遇到各种面试题,这对应聘人员的知识掌握能力要求较高.本文将为大家带来的就是20道必须掌握的C++面试题,不要错过哦! 问1:请用简单的语言 ...

  7. MFC不同分辨率和缩放下正常显示的方法

    方法1:为了满足Windows操作系统上不同分辨率下的显示,我们在OnPaint中重绘.

  8. mybaits2-Dao开发

    项目结构: 1.创建project,导入相关依赖(前提).配置db.properties与mybaits-config #mysql驱动 db.driver=com.mysql.jdbc.Driver ...

  9. 洛谷 P1708 天然气井 题解

    https://www.luogu.org/problemnew/show/P1708 这道题还是比较好的. 读完题目我们先想想如何计算某个天然气井($x_1,y_1$)和中转站($a_1,b_1$) ...

  10. 网络设置命令--ifconfig.setup

    ifconfig命令 作用:用于显示以及设置当前活动网卡信息 一.  显示当前活动网卡信息 ifconfig 从上面可以看到当前主要有2块活动网卡,eth0:代表当前本地真实网卡 lo:代表回访网卡, ...