很基礎的最小點覆蓋題目,把x,y座標軸上的點分別看做x集合和y集合,然後如果有asteroid就連邊,很容易看出就是把所有的邊覆蓋,即用最少的點覆蓋所有的邊。
最小點覆蓋=最大匹配數
1//status:g++_ac_47ms_668kb
2 #include3 #include4 #include5 #include
6 #include
7#define ll __int64
8const
int max=510,inf=1000000000;9
10bool
g[max][max];
11int
vis[max],y[max],ok[max];
12int
n,m;
1314
int dfs(int
u)1525}
26return0;
27}2829
intmain()
3042
43for(i=ans=0;i)
4849 printf("
%d\n
",ans);50}
51return0;
52 }
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...