BZOJ 1059 ZJOI2007 矩陣遊戲

2022-05-23 02:27:07 字數 1316 閱讀 3145

time limit: 10 sec  memory limit: 162 mb

submit: 2707  solved: 1322

[submit][status][discuss]

第一行包含乙個整數t,表示資料的組數。接下來包含t組資料,每組資料第一行為乙個整數n,表示方陣的大小;接下來n行為乙個n*n的01矩陣(0表示白色,1表示黑色)。

輸出檔案應包含t行。對於每一組資料,如果該關卡有解,輸出一行yes;否則輸出一行no。22

0 00 1

30 0 1

0 1 0

1 0 0

noyes

【資料規模】

對於100%的資料,n ≤ 200

題解:窩萌可以這麼想:不管怎麼變換,同一列或者是同一行的相對關係是不會發生改變的。那麼問題就轉化為能不能找到n個互相不同行或同列的點。其實就是讓每乙個橫座標找到乙個縱座標,就是二分圖匹配。

1 #include2 #include3 #include4 #include5 #include6 #include7 #include8

#define pau putchar(' ')

9#define ent putchar('\n')

10using

namespace

std;

11const

int maxn=200+10,maxm=50000+10;12

struct tedadj[maxm],*fch[maxn],*ms=adj;

13void add(int x,int y);fch[x]=ms++;return

;}14

int n,lnk[maxn];bool

vis[maxn];

15 inline int

read()

21 inline void write(int

x)if(x<0)putchar('

-'),x=-x;

23int len=0,buf[20];while(x)buf[len++]=x%10,x/=10;24

for(int i=len-1;i>=0;i--)putchar(buf[i]+'

0');return;25

}26bool match(int

x)30

}31 }return

false;32

}33bool

hungary()return

true;38

}39intt;

40int

main()

51return0;

52 }

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...