題目問的是使用**一次可以摧毀一行或一列的隕石,最少使用多少次?這個是求最小點覆蓋的問題,也就是問最少多少點可以覆蓋所有的邊。
然後最小點覆蓋又可以等於二分圖的最大匹配,所以就建圖求最大匹配 這題 建圖的用的隕石的x座標和y座標,把隕石的x座標集合和y座標集合作為2個點集,然後把每乙個隕石對應的x,y連線,比如乙個隕石(2,7),那麼2加入點集1,7加入點集2,然後連線2和7.
最小點覆蓋等於二分圖的最大匹配的證明
#include#include#include#includeusing namespace std;
vectorg[505];
int used[505],nxt[505];
bool visx[505];
int n,k;
bool ifind(int x)
//cout<<"**********"/ for(int i=1;i<=n;i++)
////cout<<"*****"/for(int i=1;i<=5;i++)
// if(visx[i]) cout/for(int i=1;i<=5;i++)
//if(visy[i]) cout
}
POJ3041最小點覆蓋
頂點覆蓋 g中的任意邊都至少有乙個端點屬於s的頂點幾何 s 屬於 v 最小頂點覆蓋,就是盡可能少的選出一些點構成集合s,使得圖g中任意邊,都至少又乙個端點屬於s 每一列當成乙個點,每一行當成乙個點,若行節點和列節點之間有邊,則表明該行列該列有乙個障礙物。主要是構圖 將每一行當成乙個點,構成集合1,每...
poj3041 最小點覆蓋
題目問的是使用 一次可以摧毀一行或一列的隕石,最少使用多少次?這個是求最小點覆蓋的問題,也就是問最少多少點可以覆蓋所有的邊。然後最小點覆蓋又可以等於二分圖的最大匹配,所以就建圖求最大匹配 這題 建圖的用的隕石的x座標和y座標,把隕石的x座標集合和y座標集合作為2個點集,然後把每乙個隕石對應的x,y連...
poj 3041 最小點覆蓋 最大匹配
詳細講解 include include include includeusing namespace std int k,n int visit 55000 int tot vectorcoll 55000 原本開小runtime error了,所以就開了個大的,ac了。int from 5500...