poj 3259 Wormholes (spfa判负环)
来源:互联网 发布:新速特软件站最新版 编辑:程序博客网 时间:2024/05/21 07:00
题目链接:http://poj.org/problem?id=3259
题意:农场有n个节点,m条小路,w个虫洞,虫洞可以让自己返回到出发之前的时间(就是负路径),用spfa判断是否有负环,因为一旦出现负环就可以多次重复负环,使得时间会提前很多,这样就一定可以回到出发之前的时间。
注意:小路是双向的,虫洞是单向的;
注意map是从0开始的;
注意重边;
#include<cstdio>#include<queue>using namespace std;const int num=505;const int inf=0x3fffffff;//太大会溢出int map[num][num],p[num],n,m,w,flag,dis[num],pn[num];//pn记录入队列的次数,次数大于n则表示出现负环queue <int> q;void init(){ int i,j; for(i=0;i<n;i++) { for(j=0;j<n;j++) map[i][j]=inf; p[i]=0; pn[i]=0; dis[i]=inf; } flag=0;}void spfa(int a){ int i,t; q.push(a); p[a]=1; pn[a]++; dis[a]=0; while(!q.empty()) { t=q.front(); q.pop(); for(i=0;i<n;i++) { if(dis[i]>dis[t]+map[t][i]) { dis[i]=dis[t]+map[t][i]; if(p[i]==0) { p[i]=1; q.push(i); pn[i]++; } } if(pn[i]>n) { flag=1; break; } } p[t]=0; }}int main(){ int t,i,a,b,c; //freopen("in.txt","r",stdin); scanf("%d",&t); while(t--) { scanf("%d%d%d",&n,&m,&w); init(); while(!q.empty()) q.pop(); for(i=0;i<m;i++) { scanf("%d%d%d",&a,&b,&c); a--;b--; if(map[a][b]>c) //注意重边 { map[a][b]=c; map[b][a]=c; } } for(i=0;i<w;i++) { scanf("%d%d%d",&a,&b,&c); a--,b--; if(map[a][b]>-c) map[a][b]=-c; } spfa(0); if(flag) printf("YES\n"); else printf("NO\n"); } return 0;}
0 0
- poj 3259 Wormholes (spfa判负环)
- Poj 3259 Wormholes(spfa判负环)
- POJ 3259 Wormholes(SPFA 判负环)
- 【POJ 3259】Wormholes 【spfa判负环】
- poj 3259--Wormholes 【spfa判负环】
- POJ 3259-Wormholes-SPFA判负环
- POJ 3259 Wormholes SPFA判负环
- poj 3259 Wormholes【spfa判负环】
- POJ 3259 Wormholes spfa判负环
- poj 3259 Wormholes(spfa)
- poj 3259 Wormholes //SPFA
- poj 3259 Wormholes SPFA
- POJ 3259 Wormholes(SPFA)
- Wormholes - POJ 3259 spfa
- poj 3259 Wormholes(spfa)
- POJ 3259:Wormholes 【SPFA】
- Wormholes POJ 3259【SPFA】
- poj 3259-- Wormholes(SPFA)
- iOS 真机调试(史上最详细步骤解析,hmt精心打造)
- 使用opencv_traincascade训练Haar、HOG、LBP Adaboost分类器
- Coherence企业级缓存
- Linux Chrome Tab 标题 乱码
- Hibernate 一对多级联更新(更新,删除多方数据)的错误解决
- poj 3259 Wormholes (spfa判负环)
- 高性能网络编程 - epoll机制
- 华为上机1-选秀打分
- 由DSP builder转战System Generator的第一个实例
- c++变量作用域问题Scope of a name
- Java synchronized详解
- Android Tombstone/Crash的log分析和定位
- MLlib-Basics (II)
- OpenCV(C++接口)学习笔记1-图像的读取、显示、保存