在忘記考慮負環之後,黎瑟的演算法又出錯了。對於邊帶權的有向圖 g = (v, e),請找出乙個點數最小的環,使得
環上的邊權和為負數。保證圖中不包含重邊和自環。
第1兩個整數n, m,表示圖的點數和邊數。
接下來的m行,每<=三個整數ui, vi, wi,表<=有一條從ui到vi,權值為wi的有向邊。
2 <= n <= 300
0 <= m <= n(n <= 1)
1 <= ui, vi <= n
|wi| <= 10^4
僅一行乙個整數,表示點數最小的環上的點數,若圖中不存在負環輸出0。
3 61 2 -2
2 1 1
2 3 -10
3 2 10
3 1 -10
1 3 10
2—————————————————————————
f[i][j][k]=mins(f[i-1][a][c]+f[1][c][b]) 轉移過來
但是這樣其實有點慢 我們可以跑一波倍增來確定答案
#include#includeview code#include
#include
using
std::min;
const
int m=357
;int
read()
while(c>='
0'&&c<='9')
return ans*f;
} typedef
intmat[m][m];
mat f[
15],ly,now;
intn,m,ans;
bool
pd(mat s)
void mins(int &x,int y)
intmain()
if(!pd(f[8])) return puts("
0"),0
; memset(ly,
0x3f,sizeof
(mat));
for(int i=1;i<=n;i++) ly[i][i]=0
;
for(int i=8;i>=0;i--)
}printf("%d
",ans+1
);
return0;
}
BZOJ4773 負環 二分
233可能我是因為沒看懂倍增的做法才去學的二分做法的,本題我們是要求最小的答案,答案是客觀已經存在的 不像dp,你需要做一些選擇 顯然是滿足單調性的,因此我們可以二分,再利用dfs spfa找負環的方法,我們限制spfa搜尋的層數,不就是限制點數的範圍了嗎?資料小我猜你也卡不了 ac code in...
判斷負環 bzoj 2019
奶 牛們沒錢了,正在找工作。農夫約翰知道後,希望奶牛們四處轉轉,碰碰運氣。而且他還加了一條要求 一頭牛在乙個城市最多只能賺d 1 d 1,000 美元,然後它必須到另一座城市工作。當然,它可以在別處工作一陣後又回來原來的城市再最多賺d美元。而且這樣往往返返的次數沒有限制。城市間有p 1 p 150 ...
毒瘤演算法系列3 負環 倍增Floyed
給定一張邊帶權的無向圖g gg,請你找出乙個點數最少的環,使得環上的邊權和為負數。保證圖中不存在重邊和自環。這道題其實最容易想到的時二分,我們去限制邊的長度,判斷是否存在小於等於這個邊權的負環。但是這麼考慮我們實現最後的判斷,我們可以使用倍增來限制邊權的長度。對於每一次的倍增,我們假設需要判定是否存...