QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#187338 | #3002. Busy Board | SolitaryDream# | WA | 552ms | 121088kb | C++20 | 2.5kb | 2023-09-24 16:29:43 | 2023-09-24 16:29:43 |
Judging History
answer
#include<bits/stdc++.h>
using namespace std;
#define FOR(i,s,t) for(int i=(s),_t=(t); i<=_t; ++i)
#define DOR(i,s,t) for(int i=(s),_t=(t); i>=_t; --i)
typedef long long ll;
typedef double db;
const int N=1005;
char a[N][N];
char b[N][N];
vector<pair<int,int>> E[N][N];
int deg[N][N];
int mark[N][N];
int A[N],B[N];
int cnt1[N],cnt2[N];
queue<pair<int,int>> Q;
int n,m;
set<int> U[N][2],V[N][2];
void upd(int i,int j) {
mark[i][j]=1;
if(b[i][j]=='X') {
--cnt1[i];
U[i][1].erase(j);
U[i][0].insert(j);
if(cnt1[i]<=1) {
for(auto p: U[i][cnt1[i]]) {
if((--deg[i][p])==0) {
Q.push({i,p});
}
}
}
--cnt2[j];
V[j][1].erase(i);
V[j][0].insert(i);
if(cnt2[j]<=1) {
for(auto p: V[j][cnt2[j]]) {
if((--deg[p][j])==0) {
Q.push({p,j});
}
}
}
} else {
if((--deg[i][j])) {
Q.push({i,j});
}
}
}
int main() {
scanf("%d%d",&n,&m);
FOR(i,1,n) scanf("%s",a[i]+1);
FOR(i,1,n) scanf("%s",b[i]+1);
int w=1;
FOR(i,1,n) FOR(j,1,m) if(a[i][j]!=b[i][j]) {w=0;break;}
if(w) {
cout << "1\n";
return 0;
}
FOR(i,1,n) FOR(j,1,m) {
if(b[i][j]=='X') {
cnt1[i]++,cnt2[j]++;
U[i][1].insert(j);
V[j][1].insert(i);
deg[i][j]=2;
} else {
U[i][0].insert(j);
V[j][0].insert(i);
deg[i][j]=3;
}
}
FOR(i,1,n) {
if(cnt1[i]<=1) {
for(auto p: U[i][cnt1[i]]) {
if((--deg[i][p])==0) {
Q.push({i,p});
}
}
}
}
FOR(j,1,m) {
if(cnt2[j]<=1) {
for(auto p: V[j][cnt2[j]]) {
if((--deg[p][j])==0) {
Q.push({p,j});
}
}
}
}
while(Q.size()) {
auto [i,j]=Q.front();
Q.pop();
if(A[i]==0) {
A[i]=1;
FOR(k,1,m) if(!mark[i][k]) upd(i,k);
}
if(B[j]==0) {
B[j]=1;
FOR(k,1,n) if(!mark[k][j]) upd(k,j);
}
}
int res=1;
int c=0;
FOR(i,1,n) FOR(j,1,m) {
if(!A[i] && !B[j]) res&=(a[i][j]==b[i][j]);
if(A[i] && B[j] && a[i][j]=='O') c=1;
}
res&=c;
cout << res << '\n';
return 0;
}
详细
Test #1:
score: 0
Wrong Answer
time: 552ms
memory: 121088kb
input:
769 998 OOOOXOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOXOOOOOOOXOOOOOOOOOOOOOOOOOOOOOOOOOOOXOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOXOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOXOOOOOOOOOOOXOOOOOOOOOOOOOOOOOOXOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOXOOOOOOOOOOOOOOOOOOOO...
output:
1
result:
wrong answer expected 0, found 1