uva10801
来源:互联网 发布:网络会员制营销的概念 编辑:程序博客网 时间:2024/06/07 05:51
题意:
给出每个电梯每层用时以及可到达的楼,每换一个电梯就要加60s
思路:
本题用到floyd,权值要自己算出来(add函数)
代码:
#include<cstdio>#include<iostream>#include<algorithm>#include<cstring>#include<cmath>using namespace std;const int maxn = 105;const int inf = 10005;int n, k, t[maxn], f[maxn][maxn];int num[maxn];int flag;void add(int a, int b, int c) {f[a][b] = f[b][a] = min(min(f[a][b], f[b][a]), abs(a-b)*c);}void deal() {for(int i=0; i<=flag; i++)for(int j=0; j<=flag; j++)for(int z=0; z<=flag; z++) {f[j][z] = min(f[j][z], f[j][i]+f[i][z]+60);}}int main() {while(scanf("%d%d", &n, &k) != EOF) {memset(f, inf, sizeof(f));for(int i=0; i<n; i++) {scanf("%d", &t[i]);}char ch;for(int i=0; i<n; i++) {ch = '\0';for(int j=0; ch != '\n'; j++) {scanf("%d%c", &num[j], &ch);flag = max(flag, num[j]);for(int k = 0; k<j; k++) {add(num[j], num[k], t[i]);}}}deal();if(k==0) printf("0\n");else if(f[0][k] < inf) printf("%d\n" ,f[0][k]);else printf("IMPOSSIBLE\n");}return 0;}
0 0
- uva10801
- uva10801
- UVA10801
- uva10801 Dijkstra
- 最短路+uva10801
- UVa10801 - Lift Hopping
- uva10801(最短路径)
- uva10801(最短路问题)
- Binary Tree Postorder Traversal
- 逆序的三位数-week1-C语言习题集
- JQuery知识点
- ImageView的属性android:scaleType,即ImageView.setScaleType(ImageView.ScaleType)
- ubuntu快捷键
- uva10801
- extern
- 初学IOS_UI基础_单组table_封装版本_有GIF图_有源文件
- Web开发JavaScript实用技巧
- 精通 Oracle+Python,第 7 部分:面向服务的 Python 架构
- TypedValue.applyDimension的用法和转换的真相
- 【HDU-oj]-1009-FatMouse' Trade(贪心)
- base64编码转换DLL使用方法定义
- ios常用的第三方类库