BNUOJ 4139 Cow Toll Paths
来源:互联网 发布:linux 屏幕键盘 编辑:程序博客网 时间:2024/06/01 14:00
给定一个无向图,求两点之间的最短距离。这里的两点距离是指两点之间的路径权之和加上包括两点在内的所有经过的点中,点权最大点的点权。
解法是floyd,但是需要变化一下。
#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;struct T{ int n; int v;};T p[260];int g[260][260],f[260][260],pv[260];int n;bool cmp(T a,T b){ return a.v<b.v;}int maxd(int c,...){ int *t,i,m; t=&c+1; m=(*t); t++; for (i=1; i<c; i++) { m=m>(*t)?m:(*t); t++; } return m;}int mind(int c,...){ int *t,i,m; t=&c+1; m=(*t); t++; for (i=1; i<c; i++) { m=m<(*t)?m:(*t); t++; } return m;}void floyd(){ int i,j,k; for (k=1; k<=n; k++) { for (i=1; i<=n; i++) { for (j=1; j<=n; j++) { if (g[p[i].n][p[j].n] >= g[p[i].n][p[k].n]+g[p[k].n][p[j].n]) { g[p[i].n][p[j].n]=g[p[i].n][p[k].n]+g[p[k].n][p[j].n]; f[p[i].n][p[j].n]=mind(2,f[p[i].n][p[j].n],g[p[i].n][p[j].n]+maxd(3,pv[p[i].n],pv[p[j].n],pv[p[k].n])); } } } }}int main(){ int m,k,i,j,t1,t2,t3; scanf("%d%d%d",&n,&m,&k); memset(g,0x3f,sizeof(g)); memset(f,0x3f,sizeof(f)); for (i=1; i<=n; i++) { g[i][i]=0; p[i].n=i; scanf("%d",&p[i].v); pv[i]=p[i].v; } sort(p+1,p+n+1,cmp); while (m--) { scanf("%d%d%d",&t1,&t2,&t3); g[t1][t2]=g[t1][t2]<t3?g[t1][t2]:t3; g[t2][t1]=g[t2][t1]<t3?g[t2][t1]:t3; } floyd(); while (k--) { scanf("%d%d",&t1,&t2); printf("%d\n",f[t1][t2]); }}
- BNUOJ 4139 Cow Toll Paths
- USACO 2009 Dec cow toll paths 过路费
- 【USACO】2009 Dec Cow Toll Paths 过路费
- USACO Cow Toll Paths, 2009 Dec
- [USACO09DEC]牛收费路径Cow Toll Paths
- 洛谷 P2966 [USACO09DEC]牛收费路径Cow Toll Paths
- bzoj1774 USACO 2009 Dec Gold 2.Cow Toll Paths 过路费 翻译+题解
- BNUOJ 3397 Catch That Cow
- Toll University
- Paths
- Paths
- Paths
- Paths
- Paths
- Paths
- Paths
- Paths
- Paths
- 设置 Oracle 监听器密码(LISTENER)
- JNI系统程序开发
- 人力资源之选人方法学习笔记_职位胜任素质模型
- Chromium启动堆栈调用函数的顺序
- 并发学习之:等待定时器(Waitable Timer)
- BNUOJ 4139 Cow Toll Paths
- 如何安装 EFI 分区引导
- POJ 2181 Jumping Cows
- Linux命令行界面下的用户和组的管理
- Oracle 监听器日志配置与管理
- 修改文件内容
- Leetcode: Binary Tree Level Order Traversal: Two Queue
- iOS流媒体开发的一些参考资料
- cocos2d-x xcode templates 安装失败