POJ-3259Wormholes
来源:互联网 发布:mac osx命令行 编辑:程序博客网 时间:2024/06/09 15:22
真是被自己蠢哭了。
为毛spfa判断负环要每个节点都判断一次啊。一次不就可以了啊啊啊啊啊啊,真是蠢。
还有因为是判断负环。所以有重边也无所谓,无所谓!!!!!
别看到重边就被别人牵着鼻子走!!!!
写了判断重边的方法.
Code
#include <iostream> #include <map> #include <algorithm> #include <cstdio> #include <cstring> #include <cstdlib> #include <vector> #include <queue> #include <stack> #include <functional> #include <set> #include<sstream>#include <cmath> using namespace std; #define pb push_back #define PB pop_back #define bk back() #define fs first #define se second #define INF 1001000 #define sq(x) (x)*(x) #define eps (1e-10) #define clr(x) memset((x),0,sizeof (x)) #define cp(a,b) memcpy((a),(b),sizeof (b)) typedef long long ll; typedef unsigned long long ull; typedef pair<int,int> P; const int maxn=1010;vector<pair<int,int> > G[maxn];int dist[maxn];int vis[maxn];int num[maxn];int N,M,W,S,E,T;int spfa(int s){for(int i=1;i<=N;i++) dist[i]=INF;clr(num);clr(vis);dist[s]=0;queue<int> q;q.push(s);++num[s];while(!q.empty()){int now=q.front();q.pop();vis[now]=0;for(int i=0;i<G[now].size();i++){int nxt=G[now][i].fs;if(dist[nxt]>dist[now]+G[now][i].se){dist[nxt]=dist[now]+G[now][i].se;if(!vis[nxt]){q.push(nxt);vis[nxt]=1;}if(++num[nxt]>N-1){return 0;}}}}return 1;}int main(){int F;scanf("%d",&F);while(F--){scanf("%d%d%d",&N,&M,&W);for(int i=1;i<=N;i++) G[i].clear();for(int i=1;i<=M;i++){scanf("%d%d%d",&S,&E,&T);if(G[S].size()==0) { G[S].pb(make_pair(E,T)); G[E].pb(make_pair(S,T)); } else { int tmp=0; for(int j=0;j<G[S].size();j++) { if(G[S][j].fs==E) { if(G[S][j].se>T) G[S][j].se=T; tmp=1; break; } } if(tmp) { for(int j=0;j<G[S].size();j++) { if(G[E][j].fs==S&&G[E][j].se>T) { G[E][j].se=T; break; } } } else { G[S].pb(make_pair(E,T)); G[E].pb(make_pair(S,T)); } }}for(int i=1;i<=W;i++){scanf("%d%d%d",&S,&E,&T);int tmp=0;for(int j=0;j<G[S].size();j++){if(G[S][j].fs==E){tmp=1;if(G[S][j].se>-T) G[S][j].se=-T; break;}}if(!tmp)G[S].pb(make_pair(E,-T));}if(spfa(N)) printf("NO\n");else printf("YES\n");}return 0;}
0 0
- poj 3259 Wormholes //SPFA
- POJ 3259 Wormholes
- poj 3259 Wormholes
- POJ 3259 Wormholes
- POJ 3259 Wormholes
- Poj 3259 Wormholes
- poj 3259 Wormholes
- poj-3259-Wormholes
- POJ-3259-Wormholes
- POJ 3259 Wormholes bellman_ford
- poj 3259 Wormholes
- poj 3259 Wormholes
- POJ 3259 Wormholes
- POJ 3259 Wormholes
- POJ 3259 Wormholes
- poj 3259 Wormholes
- POj 3259 Wormholes
- POJ 3259 Wormholes
- 最简单的定时随机切换图片
- CF 149 D Coloring Brackets(区间DP)
- android studio如何引入第三方库(.jar)
- pair RDD groupByKey countByKey countByValue aggregateByKey reduceByKey 测试
- Spring Cache注解+Redis
- POJ-3259Wormholes
- linux安装 mysql问题
- Android开发 接入支付宝移动支付
- 关于StatusBar,TitleBar,ActionBar之间的区别以及他们的高度的计算。
- CentOS SVN SHOW LOG 只显示版本号和NO DATE的解决方法
- Redis键值设计
- websocket后台推送数据
- 测试功能
- XML解析、Json解析