2020模擬賽day9 A 砍蘋果樹

2022-07-11 13:42:12 字數 1154 閱讀 2190

很經典的一道題目,首先我們考慮每一條附加邊x-y 會造成的影響

會使得x-y的簡單路徑上每條邊斷開的權值都加1

權值的意義:權值為0,它搭配m條附加邊的任意乙個都可以

權值為1,它只能搭配乙個附加邊

權值大於1,無論搭配哪個附加邊,都無法做到使原圖不連通

所以我們利用樹上差分,處理每條附加邊時,先把它加到乙個差分陣列d中 (這裡把邊權記在點上,每個點上的值為它和他父親的連邊)

當所有的附加邊處理完之後,跑一邊dfs累加一下就好了

**

#includeusing

namespace

std;

const

int maxn=3e5+5

;int

n,m,head[maxn],cnt,dep[maxn];

int f[maxn][20

],d[maxn];

struct

edge

e[maxn

<<1

];void add(int x,int

y)void dfs(int u,int

fa)}

void

init_lca()

int lca(int x,int

y)void calc(int u,int

fa)}

intmain()

dfs(

1,0);

init_lca();

for(int i=1;i<=m;i++)

calc(

1,0);

long

long ans=0

;

for(int i=2;i<=n;i++)

printf(

"%lld\n

",ans);

return

0;

}

2020天梯賽模擬賽

include using namespace std intmain void include using namespace std intmain void include using namespace std intmain void cout a b endl return0 inclu...

天梯賽賽前模擬賽補題 2020

一 暢通工程之最低成本建設問題 這道題是用最小生成樹做的,之前最小生成樹練的很少,比賽時沒寫出來,也沒考慮用最小生成樹,還是練得少。這個題可以用kruskal演算法做,先將每條路的花費從小到大排序,然後再從頭開始加每條邊花費的 從頭開始用並查集判斷兩個點的根節點是否相同,如果相同說明出現了環,就co...

NOIP提高組模擬賽9

考場跑了個dijstra就跑路,然後t了。其實dij用處不大,這題用bfs說不定還快點。但是直接大力bfs顯然同樣會t飛,考慮如何優化,問題的關鍵在於這張 圖 的 邊數 太多了,但是在bfs或者其他演算法dij中,每個點第一次被訪問就是該點的答案,也就是說,雖然我們多次掃到同乙個點,但真正有意義的只...