HDU2112-HDU Today-最短路(dijkstra+字符转换)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2112

这个题目有点坑,就是有可能起点和终点在同一个地方,所以得保存起点和终点;

#include<iostream>
#include<string>
#include<cstdio>
#include<cstring>
#include<map>
#include<queue>
#include<cmath>
#include<stack>
#include<set>
#include<vector>
#include<algorithm>
#define LL long long
#define inf 1<<29
#define s(a) scanf("%d",&a)
#define CL(a,b) memset(a,b,sizeof(a))
using namespace std;
const int N=155;
int n,m,a,b,cnt;
int Map[N][N];
int dist[N];
bool vis[N];
string s,e,s1,e1;
void dijkstra()
{
    CL(vis,false);
    for(int i=1;i<cnt;i++) dist[i]=Map[1][i];
    vis[1]=true;
    while(1){
        int v=-1;
        for(int u=1;u<cnt;u++)
            if(!vis[u]&&(v==-1||dist[u]<dist[v])) v=u;
        if(v==-1) break;
        vis[v]=true;
        for(int u=1;u<cnt;u++)
            dist[u]=min(dist[u],dist[v]+Map[v][u]);
    }
}
int main()
{
    cin.sync_with_stdio(false);
    while(cin>>n){
        if(n==-1) break;
        cin>>s1>>e1;
        map<string,int>m;
        m[s1]=1;m[e1]=2;
        cnt=3;
        for(int i=1;i<=150;i++){
            for(int j=1;j<=150;j++)
                Map[i][j]=Map[j][i]=inf;
            Map[i][i]=0;
        }
        int t;
        while(n--){
            cin>>s>>e>>t;
            if(!m[s]) m[s]=cnt++;
            if(!m[e]) m[e]=cnt++;
            if(Map[m[s]][m[e]]>t)
                Map[m[s]][m[e]]=Map[m[e]][m[s]]=t;
        }
        if(s1==e1){
            cout<<0<<endl;
            continue;
        }
        dijkstra();
        if(dist[2]<inf) cout<<dist[2]<<endl;
        else cout<<"-1"<<endl;
    }
    return 0;
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-07-28 20:56:38

HDU2112-HDU Today-最短路(dijkstra+字符转换)的相关文章

ACM: HDU 2544 最短路-Dijkstra算法

HDU 2544最短路 Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Description 在每年的校赛里,所有进入决赛的同学都会获得一件很漂亮的t-shirt.但是每当我们的工作人员把上百件的衣服从商店运回到赛场的时候,却是非常累的!所以现在他们想要寻找最短的从商店到赛场的路线,你可以帮助他们吗? Input 输入包括多组数据.每组数据第一行是两个整数N.M(N<=100,M<

hdu 2544 最短路 Dijkstra

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2544 题目分析:比较简单的最短路算法应用.题目告知起点与终点的位置,以及各路口之间路径到达所需的时间,要求输出起点到终点的最短时间. /* 最短路 Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 35043 Accepted Submission

HDU 2544 最短路 Dijkstra、Floyd、Bellman-Ford、SPFA算法

原题地址:http://acm.hdu.edu.cn/showproblem.php?pid=2544 最短路 Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 43669    Accepted Submission(s): 19216 Problem Description 在每年的校赛里,所有进入决赛的同学都会获得一件很漂亮的t-s

hdu 2544 最短路 dijkstra模板

最短路 Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 38804    Accepted Submission(s): 16925 Problem Description 在每年的校赛里,所有进入决赛的同学都会获得一件很漂亮的t-shirt.但是每当我们的工作人员把上百件的衣服从商店运回到赛场的时候,却是非常累的!所以现在他们想要寻找最

hdu-2112 HDU Today(最短路)

题目链接: HDU Today Time Limit: 15000/5000 MS (Java/Others)     Memory Limit: 32768/32768 K (Java/Others) Problem Description 经过锦囊相助,海东集团终于度过了危机,从此,HDU的发展就一直顺风顺水,到了2050年,集团已经相当规模了,据说进入了钱江肉丝经济开发区500强.这时候,XHD夫妇也退居了二线,并在风景秀美的诸暨市浬浦镇陶姚村买了个房子,开始安度晚年了.这样住了一段时间,

HDU 2544最短路dijkstra模板题

最短路 Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 33657    Accepted Submission(s): 14617 Problem Description 在每年的校赛里,所有进入决赛的同学都会获得一件很漂亮的t-shirt.但是每当我们的工作人员把上百件的衣服从商店运回到赛场的时候,却是非常累的!所以现在他们想要寻找

hdu 2544 最短路(Dijkstra Or Floyd Or dfs)

Problem Description 在每年的校赛里,所有进入决赛的同学都会获得一件很漂亮的t-shirt.但是每当我们的工作人员把上百件的衣服从商店运回到赛场的时候,却是非常累的!所以现在他们想要寻找最短的从商店到赛场的路线,你可以帮助他们吗? Input 输入包括多组数据.每组数据第一行是两个整数N.M(N<=100,M<=10000),N表示成都的大街上有几个路口,标号为1的路口是商店所在地,标号为N的路口是赛场所在地,M则表示在成都有几条路.N=M=0表示输入结束.接下来M行,每行包

HDU 2544 最短路(我的dijkstra算法模板、SPAFA算法模板)

思路:这道题是基础的最短路径算法,可以拿来试一下自己对3种方法的理解 dijkstra主要是从第一个点开始枚举,每次枚举出当当前最小的路径,然后再以那最小的路径点为起点,求出它到其它未标记点的最短距离 bellman-ford 算法则是假设有向网中有n 个顶点.且不存在负权值回路,从顶点v1 和到顶点v2 如果存在最短路径,则此路径最多有n-1 条边.这是因为如果路径上的边数超过了n-1 条时,必然会重复经过一个顶点,形成回路:而如果这个回路的权值总和为非负时,完全可以去掉这个回路,使得v1到v

HDOJ/HDU 2140 Michael Scofield&#39;s letter(字符转换~)

Problem Description I believe many people are the fans of prison break. How clever Michael is!! In order that the message won't be found by FBI easily, he usually send code letters to Sara by a paper crane. Hence, the paper crane is Michael in the he