題意:
給你乙個dag,然後問你最少多少條路徑能覆蓋所有需要覆蓋的點。
思路:最小路徑覆蓋,太明顯了,每個點向它右下方的點連邊,然後...沒啥難的地方,不說了。
#include
#include
#define n_node 24 * 24 + 10
#define n_edge 24 * 24 * 24 * 24 + 100
typedef struct
node;
typedef struct
star;
node node[n_node];
star e[n_edge];
int list[n_node] ,tot;
int mkdfs[n_node] ,mkgx[n_node];
void add(int a ,int b)
int dfs_xyl(int x)
}return 0;
}int main ()
n = nowt;
memset(list ,0 ,sizeof(list));
tot = 1;
for(i = 1 ;i <= n ;i ++)
for(j = 1 ;j <= n ;j ++)
memset(mkgx ,255 ,sizeof(mkgx));
int ans = 0;
for(i = 1 ;i <= n ;i ++)
printf("%d\n" ,n - ans);
}return 0;
}
poj 1548最小路徑覆蓋
題目大意 給出乙個矩陣,從最左上點到最右下點走,並且只能往下走和往右走,在矩陣中的一些格仔中有含有乙個 g 問最少從最左上到最右下走多少次,能把所有的g都走到 解題思路 很明顯,要將所有的g都走到,這樣可以聯想到最小路徑匹配,然後就是怎麼建圖 建圖 對於任意兩個含有 g 的點,如果a點在b點的左上方...
POJ 1548 Robots 最小路徑覆蓋
題目鏈結 題目要求用少的機械人訪問所有的點,也是說找最少的路徑訪問所有的點,也就是最小路徑覆蓋問題。題目的關鍵是如何建圖,因為機械人只能向下走或者向右走,那麼就在當前的垃圾點所在的行往下,每一列出現的第乙個垃圾點之間建一條邊即可。const int maxn 25 const int maxm 25...
POJ 1548 Robots(最小路徑覆蓋)
題目鏈結 題意 乍一看還以為是小白上那題dp,事實上不是,就是求一共幾個機械人能夠覆蓋全部路徑 思路 最小路徑覆蓋問題。乙個點假設在還有乙個點右下方,就建邊。然後跑最小路徑覆蓋就可以 include include include include using namespace std const ...