HDU 2833 WuKong 求两条最短路间最多公共点数
来源:互联网 发布:青年网络公开课 2017 编辑:程序博客网 时间:2024/06/05 18:05
题目链接
http://acm.hdu.edu.cn/showproblem.php?pid=2833
题意
两个人从两个点出发(不一定是同一个点),到达两个点(不一定是同一个点),问他们的最短路间最多可以有几个公共点。
思路
dp[i][j] 代表I到j这条最短路中最多有几个点。
#include<cstdio>#include<queue>#include<iostream>#include<vector>#include<map>#include<cstring>#include<string>#include<set>#include<stack>#include<algorithm>#define cle(a) memset(a,0,sizeof(a))#define inf(a) memset(a,0x3f,sizeof(a))#define ll long long#define Rep(i,a,n) for(int i=a;i<=n;i++)using namespace std;#define INF2 9223372036854775807llconst int INF = ( 2e9 ) + 2;const ll maxn = 310;int mp[maxn][maxn],dp[maxn][maxn];void Floyd(int n){ for(int k=1;k<=n;k++) for(int i=1;i<=n;i++) { if(mp[i][k]==INF||i==k)continue; for(int j=1;j<=n;j++) if(i!=j&&j!=k&&mp[k][j]!=INF) { if(mp[i][j]>mp[i][k]+mp[k][j]) { mp[i][j]=mp[i][k]+mp[k][j]; dp[i][j]=dp[i][k]+dp[k][j]-1; } else if(mp[i][j]==mp[i][k]+mp[k][j]&&dp[i][j]<dp[i][k]+dp[k][j]) { dp[i][j]=dp[i][k]+dp[k][j]-1; } } }}int main(){ int n,m; while(~scanf("%d%d",&n,&m)&&(n+m)) { for(int i=1;i<=n;i++) { for(int j=1;j<=n;j++) { mp[i][j]=INF; dp[i][j]=2; } dp[i][i]=1; mp[i][i]=0; } for(int i=0;i<m;i++) { int u,v,w; scanf("%d%d%d",&u,&v,&w); mp[v][u]=mp[u][v]=min(mp[u][v],w); } int s1,t1,s2,t2; scanf("%d%d%d%d",&s1,&t1,&s2,&t2); Floyd(n); int ans=0; for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) { if(mp[s1][i]+mp[i][j]+mp[j][t1]==mp[s1][t1]&& mp[s2][i]+mp[i][j]+mp[j][t2]==mp[s2][t2]) ans=max(ans,dp[i][j]); } if(mp[s1][t1]>=INF||mp[s2][t2]>=INF)ans =0; printf("%d\n",ans); }}
阅读全文
0 0
- HDU 2833 WuKong 求两条最短路间最多公共点数
- HDU 2833 WuKong 最短路
- WuKong 最短路加DP HDU 2833
- hdu 2833 WuKong(最短路 + dp)
- HDU 2833 WuKong(floyd最短路)
- hdu 2833 WuKong
- hdu 2833 WuKong
- HDU 2833 WuKong
- hdu 2833 WuKong【floyd】
- 【HDU 2833】WuKong 【Floyd】
- HDU-2833-WuKong
- HDU 2833 WuKong
- HDU 2833——wukong
- 【HDU】2833 WuKong floyd+DP
- HDU 2833 WuKong floyd+dp
- 【记忆化搜索+图论】HDU-2833-WuKong
- HDU 2833 WuKong 最短路径+DP
- HDU 2833 WuKong(floyd+dp)
- iOS block和代理的区别
- 最全Pycharm教程(29)——再探IDE,速成手册
- java多态的一些问题
- 如何学习嵌入式? 嵌入式之路从入门到放弃....
- java根据输入提取所需
- HDU 2833 WuKong 求两条最短路间最多公共点数
- 设计模式(三)——工厂方法模式
- Android与服务端使用Https加密通信
- centos7安装ycm无代码补全
- 大话设计模式之装饰模式
- 划分子网和构造超网
- HDU 6195 推公式
- LeetCode-Add Two Numbers
- shell通过端口号获取PID(进程号)