233可能我是因為沒看懂倍增的做法才去學的二分做法的,本題我們是要求最小的答案,答案是客觀已經存在的(不像dp,你需要做一些選擇),顯然是滿足單調性的,因此我們可以二分,再利用dfs-spfa找負環的方法,我們限制spfa搜尋的層數,不就是限制點數的範圍了嗎?
(資料小我猜你也卡不了)
ac code:
#include
#include
#include
#include
#include
#define rg register
#define il inline
#define maxn 505
#define ll long long
#define eps 1e-8
#define lid id << 1
#define rid (id << 1) | 1
#define rep(a,b,c) for (rg int a = 1 ; a <= c ; a += b)
using
namespace std;
il int
read()
while
(ch >=
'0'&& ch <=
'9')
return x * w;
}int head[
500005
], cnt , n , m , num[maxn]
, dis[maxn]
;int vis[
500005
], vis0;
bool ok =0;
struct edgee[
500005];
void
add(
int u,
int v,
int w)
void
spfa
(int now ,
int depth ,
int lmt)
if(depth == lmt)
return
; dis[to]
= dis[now]
+ e[i]
.v; vis[to]
= vis0;
spfa
(to , depth +
1, lmt)
; vis[to]--;
}}}bool
check
(int mid)
return0;
}int
main()
if(!check
(n))
rg int l =
1, r = n , ans =
9999999
;while
(l <= r)
cout << ans;
return0;
}
bzoj 4773 負環 倍增
在忘記考慮負環之後,黎瑟的演算法又出錯了。對於邊帶權的有向圖 g v,e 請找出乙個點數最小的環,使得 環上的邊權和為負數。保證圖中不包含重邊和自環。第1兩個整數n,m,表示圖的點數和邊數。接下來的m行,每 三個整數ui,vi,wi,表 有一條從ui到vi,權值為wi的有向邊。2 n 300 0 m...
POJ 3621 二分 判定負環
題意 傳送門 poj 3621 sightseeing cows 題解二分答案,問題轉化為判定滿足圖中存在乙個環,滿足下式的最大的 xxx fi t j x frac x tj f i x 若環上存在重複經過的點,其 f if i fi 只算一次,圖中點 邊數量不同。出現上述情況時,環由至少兩個簡單...
HNOI2009 最小圈 二分答案 負環
考慮帶權的有向圖 g v,e 以及 w e rightarrow r 每條邊 e i,j i neq j,i in v,j in v 的權值定義為 w 令 n v c c 1,c 2,cdots,c k c i in v 是 g 中的乙個圈當且僅當 c i,c 1 le i lt k 和 c k,c...