hdu 2112
来源:互联网 发布:全自动摇一摇软件 编辑:程序博客网 时间:2024/06/06 06:58
#include <cstdio>#include <cstring>#include <iostream>#include <vector>#include <algorithm>#include <map>using namespace std;const int N=160, inf=1000000000;int road[N][N], dis[N], vis[N];int n,m,s,f;void Dijkstra(){ int i,j,k,tmp; memset(vis,0,sizeof(vis)); for(i=1;i<=n;i++) dis[i]=road[s][i]; dis[s]=0; vis[s]=1; for(i=1;i<n;i++) { tmp=inf, k=s; for(j=1;j<=n;j++) { if( vis[j]==0 && tmp>dis[j] ) { tmp=dis[j]; k=j; } } vis[k]=1; for(j=1;j<=n;j++) { tmp=dis[k]+road[k][j]; if( vis[j]==0 && dis[j]>tmp ) dis[j]=tmp; } } if( dis[f]==inf ) printf("-1\n"); else printf("%d\n",dis[f]);}int main(){ // freopen("cin","r",stdin); int i,j,cost; char a[31], b[31], start[31], end[31]; while( scanf("%d",&m) && m!=-1 ) { map<string,int> v; scanf("%s %s",start,end); v[start]=1, v[end]=2; for(i=1;i<=151;i++) { for(j=1;j<=151;j++) road[i][j]=inf; } for(i=0, n=2; i<m; i++) { scanf("%s %s %d",a, b, &cost); if( v[a]==0 ) v[a]=++n; if( v[b]==0 ) v[b]=++n; road[v[a]][v[b]]=road[v[b]][v[a]]=cost; if( road[v[a]][v[b]]>cost ) road[v[a]][v[b]]=road[v[b]][v[a]]=cost; } s=v[start]; f=v[end]; Dijkstra(); } return 0;}
0 0
- HDU 2112 HDU Today
- hdu 2112 HDU Today
- Hdu-2112 HDU Today
- hdu 2112 HDU Today
- HDU 2112 HDU Today
- hdu 2112 HDU Today
- HDU 2112 HDU Today
- hdu 2112 HDU Today
- HDU 2112 HDU Today
- HDU 2112 HDU Today
- HDU 2112 HDU Today
- hdu 2112 hdu today
- hdu 2112 HDU Today
- hdu 2112 HDU Today
- hdu 2112 HDU Today
- hdu 2112 HDU Today
- HDU 2112 HDU Today
- hdu 2112:HDU Today
- SQL中的where条件,在数据库中提取与应用浅析
- bzoj1819
- 栈区和堆区内存分配区别
- 老鼠真心很讨厌啊
- Feature Set Mismatch Error on Ceph Kernel Client
- hdu 2112
- windows server无法修改目录属性,附件无法上传
- servlet&jsp学习指南
- 图的匹配问题与最大流问题(五)——计算二分图的最大匹配
- ThinkPhp关闭Debug后出错解决方案
- 待字闺中之巧妙排序分析:
- 地球的有效能量和资源是有限的,自然界发生任何变化,都会使能量被转化成不能再作功的无效能量
- 好吧,我来试最后一次啊
- eclipse添加删除插件-eclipse marketplace