POJ-3259
来源:互联网 发布:tc怎么开始编程 编辑:程序博客网 时间:2024/06/07 05:26
SPFA模板题判断是否有负环
题目链接:POJ-3259
AC代码:
#include<iostream>#include<cstring>#include<cstdio>#include<queue>using namespace std;const int N=1e3+10;const int INF=0x3f3f3f3f;#define MM(x,y) memset(x,y,sizeof(x))struct Node{int to;int next;int cst;};struct Node edge[N*N];int cnt,n,w,m;int head[N];int d[N];bool vis[N];int cont[N];queue<int>Q;void add(int u,int v,int cost){edge[cnt].to=v;edge[cnt].cst=cost;edge[cnt].next=head[u];head[u]=cnt++;}void init(){for(int i=0;i<N;i++){head[i]=-1;d[i]=INF;cont[i]=0;vis[i]=0;}cnt=0;while(!Q.empty()){Q.pop();}}bool spfa(int s,int n){d[s]=0;Q.push(s);vis[s]=1;while(!Q.empty()){int u=Q.front();Q.pop();vis[u]=0;for(int i=head[u];~i;i=edge[i].next){int v=edge[i].to;if(d[v]>d[u]+edge[i].cst){d[v]=d[u]+edge[i].cst;if(!vis[v]){Q.push(v);vis[v]=1;cont[v]++;if(cont[v]>=n) return true;}}}}return false;}int main(){int tcase,i,j,u,v,cost;scanf("%d",&tcase);while(tcase--){init();scanf("%d%d%d",&n,&m,&w);for(i=1;i<=m;i++){scanf("%d%d%d",&u,&v,&cost);add(u,v,cost);add(v,u,cost);}for(i=1;i<=w;i++){scanf("%d%d%d",&u,&v,&cost);add(u,v,-cost);}if(spfa(1,n)){printf("YES\n");}else{printf("NO\n");}}return 0;}
阅读全文
0 0
- poj 3259
- poj 3259
- poj-3259
- poj 3259
- poj 3259
- poj 3259
- POJ 3259
- poj 3259
- poj.3259
- poj-3259
- POJ 3259
- poj-3259
- poj 3259
- POJ-3259
- poj 3259
- POJ 3259
- poj----3259
- poj 3259
- 搜索引擎工作原理是什么.baikew
- Java异常体系简析
- Android Bluetooth Error
- LINUX 常用基本命令
- mysql工作原理
- POJ-3259
- maven项目切换jdk版本后的注意事项
- 编程之战第十章 字符串与凶手(下)
- jvm主内存与工作内存
- codeforces 423 ABC三题题解
- 接口测试
- Java内存屏障和可见性
- ExtJs 查看图片 弹出窗口
- js 定时器 倒计时