time limit: 10 sec memory limit: 162 mb
第一行包含乙個整數t,表示資料的組數。接下來包含t組資料,每組資料第一行為乙個整數n,表示方陣的大
小;接下來n行為乙個n*n的01矩陣(0表示白色,1表示黑色)。
輸出檔案應包含t行。對於每一組資料,如果該關卡有解,輸出一行yes;否則輸出一行no。
0 00 1
0 0 1
0 1 0
1 0 0
noyes
對於100%的資料,n ≤ 200
一道年代久遠的省選題....
emmmmm怎麼說呢 感覺還算比較勁??
可能大佬們都覺得比較簡單吧.....
找出n個黑點覆蓋在對角線上;
設最後被選入答案的點集為 p
因為如果兩個點的x或y相同,他們必不可能同時出現在 p 中(都是整行整列的交換)
說明我們只需要找出n個黑點,能夠滿足他們的x,y均不相同,才可以滿足題意
所以題目就和亂七八糟的交換都沒有關係了
直接對於原圖進行二分圖匹配(乙個x匹配乙個y)看最後是否能找到n個點
#include #include #include #include #include #include #define maxn 210
using namespace std;
inline int read(int x=0)
vectorg[maxn];
int mate[maxn];
bool vis[maxn];
inline bool dfs(int x)
}return false;
}int main()
} for(int i=1;i<=n;i++)
} if(!flag)puts("no");
else puts("yes");
} return 0;
}
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...