HDU 2112 HDU Today【最短路+map容器,spfa算法+Dijkstra算法】

来源:互联网 发布:幼儿教育软件哪个好 编辑:程序博客网 时间:2024/05/16 23:35


HDU Today

Time Limit: 15000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 25102    Accepted Submission(s): 6067


Problem 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
6xiasha westlakexiasha station 60xiasha ShoppingCenterofHangZhou 30station westlake 20ShoppingCenterofHangZhou supermarket 10xiasha supermarket 50supermarket westlake 10-1
 

Sample Output
50Hint:The best route is:xiasha->ShoppingCenterofHangZhou->supermarket->westlake虽然偶尔会迷路,但是因为有了你的帮助**和**从此还是过上了幸福的生活。――全剧终――
 

Author
lgx

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


此题我的Dijkstra算法代码老是RE,找不到错误。。。

spfa算法AC代码:

#include <iostream>#include <cstdio>#include <map>#include <queue>using namespace std;const int INF=0x3f3f3f3f;int a[155][155];int dis[155];bool vis[155];int n,m;void spfa(){    for(int i=1; i<=n; i++)    {        dis[i]=INF;        vis[i]=false;    }    dis[1]=0;    vis[1]=true;    queue<int>q;    q.push(1);    while(!q.empty())    {        int p=q.front();        q.pop();        vis[p]=false;        for(int i=1; i<=n; i++)        {            if(dis[i]>dis[p]+a[p][i])            {                dis[i]=dis[p]+a[p][i];                if(!vis[i])                {                    vis[i]=true;                    q.push(i);                }            }        }    }}int main(){    char s[35],e[35];    char ss[35],ee[35];    int d;    map<string,int>mapp;    while(scanf("%d",&m)!=EOF,m!=-1)    {        for(int i=0; i<155; i++)        {            for(int j=0; j<155; j++)                if(i==j) a[i][j]=0;                else a[i][j]=INF;        }        mapp.clear();        cin>>ss>>ee;        n=0;        mapp[ss]=++n;        if(mapp[ee]==0)            mapp[ee]=++n;        while(m--)        {            scanf("%s%s%d",&s,&e,&d);            if(mapp[s]==0) mapp[s]=++n;            if(mapp[e]==0) mapp[e]=++n;            if(a[mapp[s]][mapp[e]]>d)                a[mapp[s]][mapp[e]]=a[mapp[e]][mapp[s]]=d;        }        spfa();        if(dis[mapp[ee]]>=INF)            cout<<"-1"<<endl;        else            cout<<dis[mapp[ee]]<<endl;    }    return 0;}



0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 蚂蚁借呗2万逾期怎么办 蚂蚁借呗还款金额受限怎么办 蚂蚁借呗不能借钱了怎么办 美柚手机号换了怎么办 美柚他他圈被禁言了怎么办? 被蝎子蜇了屁股怎么办 被蝎子蛰了该怎么办 孕妇让蝎子蛰了怎么办 脸被蝎子蛰了怎么办 皮肤看着有点老怎么办 王者铭文被卖了怎么办 游戏cp送我皮肤怎么办 消防改革武警学院的学员怎么办 几把毛掉的厉害怎么办 从公务员调入事业单位的怎么办 电车被城管扣了怎么办 超变战陀发射器绳坏了怎么办 家里人总打击我怎么办干啥都要骂 欧陆风云4破产后怎么办 车被别人喷了漆怎么办 龙分期绑银行卡维护钱还不上怎么办 去维和要是伤了怎么办 头盔镜片刮花了怎么办 小牛u1钥匙丢了怎么办 非牛顿流体干了怎么办 刺激战场0信誉分怎么办 假如非牛顿干了怎么办? 退出id后照片了怎么办 小麦收割机麦糠有籽粒怎么办 在家带娃没钱花怎么办 看3d电影近视的怎么办 摩托车电瓶没电了怎么办 踏板摩托车电瓶没电了怎么办 摩托车离合油没了怎么办 论文数据计算错误该怎么办 脚被擦破皮了痛怎么办 脚撞到了很疼怎么办 腿不小心磕青了怎么办 木制椅子腿断了怎么办 实木椅子腿断了怎么办 铁质椅子腿断了怎么办