題意:有a,b兩台機器, 機器a 有 n個模式(0, 1, 2....n-1),同樣機器b有m個模式, 兩個機器一開始的模式都為0,有k個作業(id,x,y) 表示作業編號id, 該作業必須在a機器在模式x下或者b機器在模式y下完成,問你至少要切換幾次機器模式。
思路:很裸的最小覆蓋點集,不熟悉概念的多看看藍書吧,很容易證明 最小覆蓋點集 == 最大匹配
#include #include #include using namespace std;
vector edge[113];
int pre[113];
bool vis[113];
int n, m, q;
bool dfs(int u)
} return 0;
}int main()
memset(pre, -1, sizeof(int)*m);
int cnt = 0;
for(i = 0; i < n; i++)
printf("%d\n", cnt);
} return 0;
}
POJ 3041 Asteroids(最小點覆蓋)
poj 3041 asteroids 題意 給出m個點的所在行列,每次可以選擇清除一行或者一列,問清除這些點的最小操作次數是多少?分析 將所有點的行看成一組,所有的點列看成一組,對每個點的行和列建一條邊,每條邊就代表乙個點,清除一行或者一列可以看成選擇二分圖中的乙個點,清除所有的點,就相當於選擇二分...
POJ 3041 Asteroids 最小點覆蓋
題意 用最少的射擊來消滅圖中的小行星。關鍵是建圖轉化,建乙個 橫座標到縱座標的二分圖,有障礙的點的位置上的值賦值為1,然後根據題意求的是二分圖的最小點覆蓋數,根據乙個定理,知道最小點覆蓋數 最大匹配數 ac include include include include include includ...
POJ 3041 Asteroids(最小點覆蓋)
題意 在乙個網格中有若干個點,每一次可以一下子清除一行或者一列,問最少幾次可以將網格中的點全部清除。通過每個點建立橫座標與縱座標的連線 即建邊 將橫座標和縱座標看做二分圖中的點,選擇最少的點來覆蓋所有的邊。include include include include include include...