首页 > 代码库 > poj 3259
poj 3259
题意:一个图中有两种路径 1 无方向权值为政 2 有方向权值为负 问是否存在一个回路其权值为负
思路:bellman算法
#include<iostream> using namespace std; struct Edge { int u,v; int w; }e[15000]; int all; int dist[1555]; int n,m1,m2; bool bellman() { int INF=999999999; int i,j; for(i=1;i<=n;i++) dist[i]=INF; dist[1]=0; for(i=1;i<=n;i++) { for(j=0;j<all;j++) { if(dist[e[j].v]>(dist[e[j].u]+e[j].w)) dist[e[j].v]=dist[e[j].u]+e[j].w; } } for(j=0;j<all;j++) { if(dist[e[j].v]>(dist[e[j].u]+e[j].w)) return true; } return false; } int main() { int x,y,t,i; int cas; cin>>cas; while(cas--) { all=0; cin>>n>>m1>>m2; for(i=1;i<=m1;i++) { cin>>x>>y>>t; e[all].u=x;e[all].v=y;e[all].w=t;all++; e[all].u=y;e[all].v=x;e[all].w=t;all++; } for(i=1;i<=m2;i++) { cin>>x>>y>>t; e[all].u=x;e[all].v=y;e[all++].w=t*(-1); } if(bellman()) cout<<"YES"<<endl; else cout<<"NO"<<endl; } return 0; }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。