poj 1548最小路徑覆蓋

2021-07-16 00:19:42 字數 628 閱讀 3152

題目大意:給出乙個矩陣,從最左上點到最右下點走,並且只能往下走和往右走,在矩陣中的一些格仔中有含有乙個『g』,問最少從最左上到最右下走多少次,能把所有的g都走到

解題思路:

很明顯,要將所有的g都走到,這樣可以聯想到最小路徑匹配,然後就是怎麼建圖

建圖:對於任意兩個含有'g'的點,如果a點在b點的左上方,則讓a指向b

這樣再求最小路徑覆蓋,找到最小的路徑,將所有點都覆蓋了

而最小路徑覆蓋=點數-最大匹配數

/*

memory 524k

time 32ms

*/#include using namespace std;

#define maxv 600

typedef structpoint;

point pt[maxv];

int pt_sum;

bool map[maxv][maxv],use[maxv];

int link[maxv];

int dfs(int x)}}

} printf("%d\n",hungary());

pt_sum=0;

} return 0;

}



POJ1548最小路徑覆蓋

題意 給你乙個dag,然後問你最少多少條路徑能覆蓋所有需要覆蓋的點。思路 最小路徑覆蓋,太明顯了,每個點向它右下方的點連邊,然後.沒啥難的地方,不說了。include include define n node 24 24 10 define n edge 24 24 24 24 100 typed...

POJ 1548 Robots 最小路徑覆蓋

題目鏈結 題目要求用少的機械人訪問所有的點,也是說找最少的路徑訪問所有的點,也就是最小路徑覆蓋問題。題目的關鍵是如何建圖,因為機械人只能向下走或者向右走,那麼就在當前的垃圾點所在的行往下,每一列出現的第乙個垃圾點之間建一條邊即可。const int maxn 25 const int maxm 25...

POJ 1548 Robots(最小路徑覆蓋)

題目鏈結 題意 乍一看還以為是小白上那題dp,事實上不是,就是求一共幾個機械人能夠覆蓋全部路徑 思路 最小路徑覆蓋問題。乙個點假設在還有乙個點右下方,就建邊。然後跑最小路徑覆蓋就可以 include include include include using namespace std const ...