hdu 1690 Bus System
2015-06-12 12:12
337 查看
[code]#include<stdio.h> #include<string.h> #include<iostream> #include<algorithm> using namespace std; const __int64 inf=1e18; const __int64 N=100+5; __int64 edge ,use ,g ,l1,l2,l3,l4,c1,c2,c3,c4,n,m; __int64 getsum(__int64 x,__int64 y) { __int64 t; if(x-y<0) t=y-x; else t=x-y; if(t==0) return 0; if(t>l4) return -1; else if(t<=l4&&t>l3) return c4; else if(t<=l3&&t>l2) return c3; else if(t<=l2&&t>l1) return c2; else return c1; } void floyd() { __int64 i,j,k; for(k=0; k<n; k++) { for(i=0; i<n; i++) { for(j=0; j<n; j++) { if(edge[i][k]>=inf||edge[k][j]>=inf) continue; edge[i][j]=min(edge[i][j],edge[i][k]+edge[k][j]); } } } } int main() { __int64 ans,_,t,k,i,j,x,y; scanf("%I64d",&_); for(t=1; t<=_; t++) { scanf("%I64d%I64d%I64d%I64d %I64d%I64d%I64d%I64d",&l1,&l2,&l3,&l4,&c1,&c2,&c3,&c4); for(i=0; i<N; i++) for(j=0; j<N; j++) { if(i==j) edge[i][j]=0; else edge[i][j]=inf; } scanf("%I64d%I64d",&n,&m); for(i=0; i<n; i++) { scanf("%I64d",&g[i]); } for(i=0;i<n;i++) for(j=0;j<n;j++) { if(getsum(g[i],g[j])==-1) continue; edge[i][j]=min(getsum(g[i],g[j]),edge[i][j]); } floyd(); printf("Case %I64d:\n",t); for(i=0; i<m; i++) { scanf("%I64d%I64d",&x,&y); if(edge[x-1][y-1]>=inf) printf("Station %I64d and station %I64d are not attainable.\n",x,y); else printf("The minimum cost between station %I64d and station %I64d is %I64d.\n",x,y,edge[x-1][y-1]); } } return 0; }
相关文章推荐
- 坑人的 Javascript 模块化编程 sea.js
- 坑人的 Javascript 模块化编程 require.js
- hdu 1690 Bus System
- 关于extjs5.0下的mixins
- HTML 之前未接触过的标签
- RxJava使用介绍
- nginx配置静态文件目录,压缩传输
- HDOJ 1021 Fibonacci Again
- [C++] MyList<T>
- linux命令2--chgrp命令
- iOS学习1_初体验
- 18 行为型模式-----模板方法模式
- iOS学习1_初体验
- vector_construct_interator;delete为什么能识别free内存大小
- hdu1686 Oulipo
- java实现任意进制的互相转换
- NGUI Table页(UIToggle和UIToggledObjects)
- C#中Shear的用法实例
- loadrunner运行用户设置
- mysql 关键字-保留字