题意:

有n个城市,有m条路,给出每条路的出发和结束的城市及长度,求从第一个城市到最后一个城市的最短路。按格式输出。

power oj 2443

题解:

标准dijk算法。
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<iostream>
using namespace std;
const int INF=0x3f3f3f3f;
const int maxn=505;
typedef long long LL;
int W[maxn][maxn];
int vis[maxn];
int dis[maxn];
int n,m;
void init()
{
for(int i=0;i<maxn;i++)
{
for(int j=0;j<maxn;j++)
W[i][j]=INF;
W[i][i]=0;
}
memset(vis,0,sizeof(vis));
} void dijk()
{
for(int i=0;i<n;i++) dis[i]=(i==0?0:INF);
for(int i = 0;i < n;i++)
{
int m = INF , x=0;
for(int y = 0;y <n;y++) if(!vis[y] && dis[y] <= m) m = dis[x=y];
vis[x] = true;
for(int y = 0;y < n;y++) dis[y]=min(dis[y],dis[x]+W[x][y]);
}
}
int main()
{
double sp1,sp2;
int u,v,d;
while(~scanf("%d%d",&n,&m))
{
init();
for(int i=0;i<m;i++)
{
scanf("%d%d%d",&u,&v,&d);
if(W[u][v]>d&&u!=v)
W[u][v]=W[v][u]=d;
}
dijk();
scanf("%lf%lf",&sp1,&sp2);
if(dis[n-1]>=INF)
printf("There is a tie!\n");
else
{
printf("%.1lf %.1lf\n",(double)dis[n-1]/sp1+10.00,(double)dis[n-1]/sp2);
}
}
return 0;
}

最新文章

  1. 内存提取SWF,破解doswf方法概述
  2. java提高篇(八)----详解内部类
  3. Flexbox制作CSS布局实现水平垂直居中
  4. free 和 fclose
  5. java反射快速入门(二)
  6. php基础_2
  7. git pull VS git fetch&amp;merge(good)
  8. lua及luci学习
  9. vue(1)——node.js安装使用,利用npm安装vue
  10. shell脚本学习笔记(符号)
  11. 如何在Qt Creator中导入图标资源
  12. js 将很长的内容进行页面分页显示
  13. DOM事件监听器
  14. okvis代码解读
  15. element-dialog封装成子组件
  16. FFmpeg在JAVA中的使用-音频提取&amp;字幕压缩
  17. 【python学习-5】面向对象的python
  18. Django-Filter源码解析一
  19. webView内部跳转后 返回不行了
  20. Rookey.Frame v1.0快速开发平台-用户登录

热门文章

  1. Highest Rated Features
  2. openwrt 的 inittab
  3. Git子模块引用外部项目
  4. java基础(1)
  5. erlang四大behaviour之三-gen_event
  6. Python 的方法重载
  7. 2.Add Two Numbers-两个单链表相加
  8. Hibernate框架--关联映射,一对多,多对多 inverse cascade
  9. Hibernate框架--配置,映射,主键
  10. input type=&quot;file&quot; 的一些问题