日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

POJ 3259 SPFA

發布時間:2023/12/20 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 POJ 3259 SPFA 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

這題讓我英語太受打擊了,題意難懂,讀懂題意紙老虎。

算法:

1.題意本質就是判斷是否存在負權回路。

2.SPFA,一個點入隊大于等于N次,就說明它存在負權回路。

View Code #include <stdio.h> #include <string.h> #include <stdlib.h> #include <queue> #include <iostream> using namespace std; #define MAXN 100100struct Edge {int u, next, val;Edge() {}Edge( int v , int Next ,int Val): u(v),next(Next), val(Val) { } }edge[MAXN];const int inf = 0x7f7f7f7f; int head[MAXN],dis[MAXN], visit[MAXN], size, hash[MAXN];int N, M, W, T;struct node {int ID,dis; };void init( ) {for( int i = 0; i <= N; i++){head[i] = -1;visit[i] = 0;dis[i] = inf;hash[i] = 0;}size = 0;}void AddEdge( int u, int v, int val, int num) {edge[size] = Edge( v, head[u], val);head[u] = size++;if( !num ){edge[size] = Edge( u, head[v], val);head[v] = size++;}}void SPFA( ) {queue<node>q;node p;p.ID = 1;p.dis = 0;q.push(p);dis[1] = 0;while( !q.empty( )){ p = q.front( );q.pop();int v = p.ID;int wx = dis[v];visit[v] = 0;for( int e = head[v]; e != -1; e = edge[e].next){ int u = edge[e].u;int w = edge[e].val;if( dis[u] > wx + w ){dis[u] = wx + w;if( !visit[u] ){ p.ID = u;p.dis = dis[u];visit[u] = 1;q.push( p );hash[u]++;}if( hash[u] >= N ){puts("YES");return ; }} }}puts("NO"); } int main( ) {int a, b, c;scanf("%d", &T);while(T--){scanf("%d%d%d", &N, &M, &W);init( ); for( int i = 1; i <= M; i++){scanf("%d%d%d", &a, &b, &c);AddEdge( a, b, c, 0); }for( int i = 1; i <= W; i++){ scanf("%d%d%d", &a, &b, &c);AddEdge( a, b, -c, 1); }SPFA( );} return 0; }

轉載于:https://www.cnblogs.com/tangcong/archive/2012/07/10/2585122.html

總結

以上是生活随笔為你收集整理的POJ 3259 SPFA的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。