題意:給你乙個矩陣,每個格仔是0或者1,每次操作可以任意交換兩行或者兩列,問是否可以使得主對角線的所有點都為1,如果沒有,則輸出-1,否則輸出交換操作。
分析:行列匹配+暴力找解,只移動行或者列就行。
**:#include #include #include using namespace std;
const int maxn=1005;
const int maxm=1000005;
struct edgenode
edge[maxm];
int head[maxn],cnt;
void add(int x,int y)
void init()
int n,m,v[maxn],pre[maxn];
int dfs(int x)}}
return false;
}int erfenpipei()
return sum;
}int main()
}ans=0;
int k=erfenpipei();
if(k
HDU 2819 最大匹配
這個題就是給你乙個只含有0和1的矩陣,問你能否通過行列交換使得對角線上的元素全為1,首先需要注意的是我們僅通過行交換或者列交換就可以使得矩陣滿足條件,然後我們將行和列看成點,矩陣中1的元素看成邊,建立乙個有向圖,求出行列的最大匹配數,即可。如下 include using namespace std...
HDU2819 Swap 匈牙利演算法 行列匹配
題目鏈結 sample output 1r 1 2 1給定乙個僅含有0與1的n階方陣,詢問是否可以通過行列變換將其對角線上的所有元素變為1,若能則輸出變換方法。行列進行匹配,若結果小於n則說明現存元素無法使得對角線全為1,否則作行列變換。需要清楚的是,僅通過行或列變換即可以滿足題目要求。includ...
hdu 2819 求最小頂點覆蓋數
和其他最小頂點覆蓋數題沒啥區別 唯一區別是求完之後要交換一下列或者行 將你求得的匹配行或者列交換一下再輸出就好 includeusing namespace std define max path 1000 define me a memset a,1,sizeof a int top,head m...