樹上最小邊覆蓋問題

2022-04-30 23:09:28 字數 505 閱讀 4383

1077. 皇宮看守

對於一條邊,可以由父節點覆蓋,或者子節點覆蓋,f[u][0]表示該節點不放士兵,f[u][1]表示該節點放士兵.

當該節點不放時,只有由所有子節點放的情況轉移;當該節點放時,可以由子節點放或不放的情況轉移而來

#includeusing namespace std;

const int n=1510;

int h[n],idx,f[n][2];//0不放,1放

struct ege[n*2];

void add(int u,int v);

h[u]=idx++;

}void dfs(int u,int pre)

}int main()

}dfs(0,-1);

if(n==1) cout<<1

cout<}

return 0;

}

HDU 1350 最小邊覆蓋

將某個人的行程視為二分圖中的乙個節點,用結構體記錄每個節點的資訊 起點時間,終點時間,位置 然後對於每個節點,看它結束後能否提前趕到其他節點,能的話就加邊。然後就用二分圖匹配,算出最小邊覆蓋就可以了。為什麼是最小邊覆蓋,因為乙個計程車走一條邊,囊括所有節點的最少的邊數就是我們要求的最少計程車數。記得...

HDU 6311 尤拉路 最小邊覆蓋

原題 題意 對於乙個圖 不一定聯通 最少需要多少筆 路徑 能覆蓋所有的邊,還有輸出路徑。尤拉路,對於乙個聯通的圖,需要max 1,度數為奇數的點 2 筆就能畫完。這題,對於每個聯通塊,把度數為奇數的點,按 對 加邊,只留兩個點做起點和終點,應該是這樣理解 加的邊就是 虛 邊。補完圖後,跑乙個dfs,...

樹上差分 點覆蓋 邊覆蓋

樹上差分實際上類似於樹鏈剖分,將一條鏈分為輕鏈和重鏈,再分別對兩個直鏈去做差分標記,最後再去對於每個點dfs他的子節點求樹上字首和.類似的題目自己做過的不多,這裡推薦兩道比較簡單的題目,都是邊覆蓋問題.eoj monthly 2018.8 d.delivery service p2680 運輸計畫 ...