POJ1422 最小路徑覆蓋

2022-09-05 01:21:08 字數 1043 閱讀 1407

題意:

乙個戰場,往戰場上投放傘兵,每個傘兵不能後退,只能往前走,問你最少多少個傘兵可以吧所有的點都占領。

思路:

這個題是最小路徑覆蓋,最小路徑覆蓋 = n - 最大匹配數,首先說下什麼是最小路徑覆蓋,給你乙個有向無環圖,問你最少用多少條無返回路徑可以覆蓋所有點,再說下為什麼是n - 最大匹配數,想下,假如沒有邊,那麼就是每個點放乙個傘兵,假如只有一條邊,那麼就是n - 1,兩條的或有可能是 n - 1,也有可能是 n - 2,加入是 a->b->c 就是n - 1,如果是 a->b ,a-c,或者a

-> b ,d ->c就是n - 2,這樣就用到了二分匹配的性質,只要能匹配上一隊就少了乙個傘兵,所以最少的傘兵 = n - 最大匹配數。

#include

#include

#define n_node 150

#define n_edge 150

typedef

struct

star;

star e[n_edge];

int list[n_node]

,tot;

int mk_gx[n_node]

,mk_dfs[n_node];

void

add(

int a ,

int b)

intdfs_xyl

(int x)

}return0;

}int

main

()memset

(mk_gx ,

255,

sizeof

(mk_gx));

int sum =0;

for(i =

1;i <= n ;i ++)

printf

("%d\n"

,n - sum);

}return0;

}

poj 1422 最小路徑覆蓋

題意 乙個地圖上有n個小鎮,以及連線著其中兩個小鎮的有向邊,而且這些邊無法形成迴路。現在選擇一些小鎮空降士兵 1個小鎮最多1個士兵 士兵能沿著邊走到盡頭,問最少空降幾個士兵,能遍歷完所有的小鎮。思路 匈牙利演算法求最小路徑覆蓋 在乙個有向圖中,路徑覆蓋就是在圖中找一些路徑,使之覆蓋了圖中的所有頂點,...

POJ 1422 最小路徑覆蓋

題意 城市裡通過交點 交點 有向 標示一條街道 不存在迴路 問空襲時,需要如何降下最少的傘兵 放到交點路口上 使得傘兵能在不重複走同樣交點的條件下,所有的傘兵遍歷完整個城市的所有交點。分析 其實每個傘兵走的就是一條有向的簡單路徑。我們要求的就是該dag圖的最少可以用多少條簡單路徑覆蓋所有節點且任意兩...

POJ1422 最小路徑覆蓋入門

題意 dag求最小路徑覆蓋。注意 二分匹配只試用於求dag的最小路徑覆蓋,有環就不行,具體可以理解證明。對n個點進行拆點,分成左右兩排點,對於邊 建 然後 最小路徑覆蓋 總點數n 最大匹配。簡單的證明 每匹配一對就說明u和v在同一條路徑上,拿路徑數就少1。include include includ...