POJ 1548 Robots 最小路徑覆蓋

2022-06-08 03:54:09 字數 660 閱讀 5020

題目鏈結

題目要求用少的機械人訪問所有的點,也是說找最少的路徑訪問所有的點,也就是最小路徑覆蓋問題。

題目的關鍵是如何建圖,因為機械人只能向下走或者向右走,那麼就在當前的垃圾點所在的行往下,每一列出現的第乙個垃圾點之間建一條邊即可。

const int maxn = 25;

const int maxm = 25*25;

int g[maxn][maxn], nums, mp[maxm][maxm];

int a, b, vis[maxm], match[maxm];

void solve(int x, int y)

g[a][b] = ++nums;

while(cin >> a >> b && (a||b)) g[a][b] = ++nums;

for (int i = 1; ifor (int j = 1; jif (g[i][j]) solve(i, j);

int ans = nums;

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

cout << ans << endl;

nums = 0; zero(g); zero(mp); zero(match);

} return 0;

}

POJ 1548 Robots(最小路徑覆蓋)

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

poj 1548最小路徑覆蓋

題目大意 給出乙個矩陣,從最左上點到最右下點走,並且只能往下走和往右走,在矩陣中的一些格仔中有含有乙個 g 問最少從最左上到最右下走多少次,能把所有的g都走到 解題思路 很明顯,要將所有的g都走到,這樣可以聯想到最小路徑匹配,然後就是怎麼建圖 建圖 對於任意兩個含有 g 的點,如果a點在b點的左上方...

POJ1548最小路徑覆蓋

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