給出一張無向圖,問有多少組點a,b,c滿足存在至少一條從a經過b到c的簡單路徑。
首先考慮列舉點a,c,這樣每一組a,c對答案的貢獻就是可能在ac路徑之間出現的點的個數,然後我們可以對圖建圓方樹,使圓點的點權為-1(去重),方點的點權為點雙的大小,這樣ac路徑之間出現的點的個數就是a,c兩點在圓方樹上的路徑的點權和,然後用樹形dp統計每個點對答案的貢獻即可。
注意,圖不一定連通。
#include
#include
#include
#include
#define ll long long
#define n 500100
using
namespace std;
ll n,m,yn,first[n]
,bb=
1,dfn[n]
,low[n]
,tt,sta[n]
,top,bj[n]
,num[n]
,ans,size[n]
,tmp;
bool use[n]
;struct bn
bn[n]
;vectorson[n]
,st;
inline
void
add(ll u,ll v)
void
dfs(ll now)
t=bn[
(sta[top]
<<1)
+1].to;
if(bj[t]
!=n)
if(sta[top]
==q)
break;}
top--;}
}}}ll dfs
(ll now,ll last)
p+=(size[tmp]
-res)
*res;
ans+
=p*num[now]
;return res;
}int
main()
for(i=
1;i<=yn;i++)}
for(tmp=
0;tmpsize()
;tmp++
) cout<}
2018APIO 進京趕考
先見識了一下ctsc的操作。漲了見識。打鐵匠x1 見識了個全英文的ppt,各種講課其實真的講的很好,只是邏輯性太強反而讓完全不會的同學有些尷尬。linux真的令人窒息。guide用不起就算了,控制台除錯。報錯直接密密麻麻打5頁螢幕看都看不懂。編譯都編譯不起我還玩個啥?我就聽懂了凱老師的講課,彈幕令人...
遊記 APIO2018遊記
update 雞排真好吃,明年有機會再來北京van明天就要去北京浪了,於是在模擬apio2015前嘗試去做了hash,很愉快地wa了,就開始了模擬apio2015的比賽。a題亂搞,c題亂搞,b題結果暴力都沒寫出來。感覺這為後面暴力沒搞出來暴力打好了堅實的基礎 hdhd過金牌線。總體還是很愉快的,每個...
APIO2018 鐵人兩項
題意 在乙個無向圖裡面選三個點 s c f 需要能夠從 s 出發,經過 c 到達 f 點,中間不能提前經過 f 且需要是乙個簡單路徑 solution 簡單路徑當然就是園方樹了,想想怎麼統計答案 yy一下可以發現,有一條路徑 s f 中間能選的點就是路徑上的圓點和 因為在乙個點雙連通分量裡面,一定有...