首页 > 代码库 > poj 3259
poj 3259
不定点求最短路,只要找到负环,说明就能回到出发时间之前的时间,即的d[i][i]<0.
#include <iostream> #include <cstring> #include <cstdio> #include <algorithm> using namespace std; const int maxn=500+10; int tt,m,n,w; int d[maxn][maxn]; const int inf=0x3f3f3f3f; int fold() { for(int k=1; k<=n; k++) for(int i=1; i<=n; i++) { for(int j=1; j<=n; j++) { int ff=d[i][k]+d[k][j]; if(ff<d[i][j]) d[i][j]=ff; } if(d[i][i]<0) return 1; } return 0; } int main() { int a,b,t; scanf("%d",&tt); for(int kk=1; kk<=tt; kk++) { memset(d,inf,sizeof(d)); scanf("%d%d%d",&n,&m,&w); for(int i=0; i<n; i++) d[i][i]=0; for(int i=0; i<m; i++) { scanf("%d%d%d",&a,&b,&t); if(t<d[a][b]) d[a][b]=d[b][a]=t; } for(int i=0; i<w; i++) { scanf("%d%d%d",&a,&b,&t); d[a][b]=-t; } int bb=fold(); if(bb) printf("YES\n"); else printf("NO\n"); } return 0; }
poj 3259
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。