暴力列舉/spfa/bellman-ford/奇怪的貪心/超神搜尋
輸入格式:
第一行乙個正整數t表示資料組數,對於每組資料:
第一行兩個正整數n m,表示圖有n個頂點,m條邊
接下來m行,每行三個整數a b w,表示a->b有一條權值為w的邊(若w<0則為單向,否則雙向)
輸出格式:
共t行。對於每組資料,存在負環則輸出一行"ye5"(不含引號),否則輸出一行"n0"(不含引號)。
輸入樣例#1: 複製
23 41 2 2
1 3 4
2 3 1
3 1 -3
3 31 2 3
2 3 4
3 1 -8
輸出樣例#1: 複製
n0ye5
n,m,|w|≤200 000;1≤a,b≤n;t≤10 建議複製輸出格式中的字串。
此題普通bellman-ford或bfs-spfa會tle
#include#include#include
#include
#define maxn 200010
using
namespace
std;
intt,n,m,tot,vist;
intvis[maxn],head[maxn],dis[maxn];
int to[maxn*2],cap[maxn*2],net[maxn*2
];int add(int u,int v,int
w)int spfa(int
now)
}vis[now]=0
;
return0;
}int
main()
for(int i=1;i<=n;i++)
if(spfa(i))
if(!vist) cout<<"n0"
<}
return0;
}
洛谷 P3385 模板 負環
題目鏈結 一開始沒注意到他的邊是非負就是雙向的。所以一直wa 用spfa。bfs判斷是否有乙個點進入次數超過n即可。include include include include include include define maxn 2005 using namespace std typedef...
洛谷 P3385 負環
聽說這道題有好幾種做法?超神搜尋?bfs?spfa?奇怪的貪心?管理員更新了資料,別想了qwq.可能是我太菜了,想不出吧.說說我的解法 我們就做普通的spfa,不要加什麼酸辣粉slf優化,會超時 判斷每個點進佇列的的次數,如果次數超過了n次,說明存在負環.證明,自己想一想也許就可以了吧,如果乙個點多...
《題解》洛谷P3385 模板 負環
題目鏈結 判斷一張圖中是否存在關於頂點1的負環 可以用spfa跑一遍,存在負環的情況就是點進隊大於n次 因為在存在負環的情況下,spfa會越跑越小,跑進死迴圈 在最差的情況下,存在的負環長度是 n 1個頂點 這麼長 顯然這是n個點長度,但不是環 這就是乙個環,n 1個點的長度 所以 很明了了,只需將...