BZOJ1059 ZJOI2007 矩陣遊戲

2022-03-16 16:46:42 字數 785 閱讀 1623

solution

由於上一題才做了一道二分圖最大匹配的裸題,所以看到這一題就感覺很像二分圖最大匹配。

顯然白點不用管,因為不可能有任何貢獻。但是行列交換咋整?正向思考受阻,別慌,這題只是判定性問題,我們反向思考。

假設已經有了乙個主對角線都為黑點的矩陣,我們忽略掉矩陣中除主對角線上黑點以外的點,考慮到它一定是經過若干行列交換得來的,於是我們可以手玩一下,把它進行行列交換,隨便幾次都行。

然後驚奇地發現不管怎麼變換這個矩陣都滿足每一行每一列都有且只有乙個黑點!(dalao:這不顯而易見嗎)

所以直接上套路,行號當左點,列號當右點,對於每個黑點(i,j)連邊i到j,跑二分圖最大匹配,如果存在完美匹配就是yes。

說白了是道水題呀。。。

code

#includeusing

namespace

std;

const

int n=205

;inline

intread()

bool

vis[n],link[n][n];

intn,t,match[n];

bool dfs(int

x) }

return

false;}

bool

hungary()

return

true;}

intmain()

return0;

}

bzoj1059

ZJOI2007 BZOJ1059 矩陣遊戲

description 第一行包含乙個整數t,表示資料的組數。接下來包含t組資料,每組資料第一行為乙個整數n,表示方陣的大小 接下來n行為乙個n n的01矩陣 0表示白色,1表示黑色 output 輸出檔案應包含t行。對於每一組資料,如果該關卡有解,輸出一行yes 否則輸出一行no。sample i...

bzoj 1059 ZJOI2007 矩陣遊戲

之前好像做過原題 就是二分匹配,無論怎麼交換只要有任何兩個1都不同行不同列就可以構造出答案,那就匈牙利模板吧 include include include include include includeusing namespace std define ll long long define f...

BZOJ 1059 ZJOI2007 矩陣遊戲

第一行包含乙個整數t,表示資料的組數。接下來包含t組資料,每組資料第一行為乙個整數n,表示方陣的大 小 接下來n行為乙個n n的01矩陣 0表示白色,1表示黑色 輸出檔案應包含t行。對於每一組資料,如果該關卡有解,輸出一行yes 否則輸出一行no。0 00 1 0 0 1 0 1 0 1 0 0 n...