hdu 1395 Minimum Transport Cost
2015-06-09 16:28
323 查看
[code]#include <stdio.h> #include <string.h> #include <iostream> #include <algorithm> #include <vector> #include <queue> #include <stack> #include <set> #include <map> #include <string> #include <math.h> #include <stdlib.h> #include <time.h> using namespace std; const int N=100; const int inf=1<<29; int edge ,path ,b ,p ; int main() { int n,i,j,k,s,t,tmp; while(~scanf("%d",&n)&&n) { for(i=1; i<=n; i++) for(j=1; j<=n; j++) { scanf("%d",&edge[i][j]); if(edge[i][j]==-1) edge[i][j]=inf; path[i][j]=j; } for(i=1; i<=n; i++) { scanf("%d",&b[i]); } for(k=1; k<=n; k++) for(i=1; i<=n; i++) { for(j=1; j<=n; j++) { if(edge[i][k]==inf||edge[k][j]==inf) continue; tmp=b[k]+edge[i][k]+edge[k][j]; if(edge[i][j]>tmp) { edge[i][j]=tmp; path[i][j]=path[i][k]; } else if(edge[i][j]==tmp&&path[i][k]<path[i][j]) { path[i][j]=path[i][k]; } } } while(~scanf("%d%d",&s,&t)) { if(s==-1&&t==-1) break; printf("From %d to %d :\n",s,t); k=s; printf("Path: %d",k); while(k!=t) { printf("-->%d",path[k][t]); k=path[k][t]; } printf("\nTotal cost : %d\n\n",edge[s][t]); } } return 0; }
相关文章推荐
- MFC 更改控件颜色
- 设计模式之十四:备忘录模式(Memento)
- hdu 1395 Minimum Transport Cost
- 微信支付[v3]
- 【Android】正确导入第三方jar包
- Redis dictScan反向二进制迭代器
- 【剑指offer】 面试题10: 二进制中1的个数
- 实现位操作
- Android Studio开发入门-引用jar及so文件
- 使用Genymotion调试出现错误INSTALL_FAILED_CPU_ABI_INCOMPATI
- Tiny VS 其它开源产品
- Tiny模板引擎之工具介绍
- flume学习(十一):如何使用Spooling Directory Source
- 实现一个字符串中的文字显示多种颜色
- objectc 与 js 交互
- caffe python 接口使用
- 算法 二分查找
- 红楼梦
- 15.1 安装主节点
- VS2010编写exe程序,在其他电脑上无法运行,提示缺少mfc100.dll的解决办法