UOJ Logo

NOI.AC

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#200501#536. 打地鼠UperFicial10087ms11116kbC++112.1kb2024-01-04 10:25:542024-01-04 12:07:05

answer

#include<bits/stdc++.h>
#define make make_pair
#define N 1010
using namespace std;
int read()
{
	int x=0,f=1;char ch=getchar();
	while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
	while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}
	return x*f;
}
int n,m,a[N][N],b[N][N],cnt1[N],cnt2[N],f[N][N],f1[N],f2[N];
char s[N][N],t[N][N];
queue<pair<int,int> >q;
bool check()
{
    for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)
    if(a[i][j]!=b[i][j])return 0;
    return 1;
}
bool run1()
{
    for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)
    if(a[i][j]!=0)return 0;
    return 1;
}
bool run2()
{
    for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)
    if(b[i][j]!=1)return 0;
    return 1;
}
void get(int x,int y)
{
    if(!f1[x])
    {
        f1[x]=1;
        for(int j=1;j<=m;j++)
        {
            if(j==y)continue;
            b[x][j]=-1;
            if(!cnt2[j])q.push(make(x,j));
        }
    }
    if(!f2[y])
    {
        f2[y]=1;
        for(int i=1;i<=n;i++)
        {
            if(i==x)continue;
            b[i][y]=-1;
            if(!cnt1[i])q.push(make(i,y));
        }
    }
}
bool solve()
{
    for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)
    if(b[i][j]==0&&cnt1[i]==1&&cnt2[j]==1)
    {
        q.push(make(i,j));
        b[i][j]=-1;
        f[i][j]=1;
    }
    while(!q.empty())
    {
        int x=q.front().first;
        int y=q.front().second;
        q.pop();
        get(x,y);
    }
    for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)
    if(b[i][j]!=-1&&a[i][j]!=b[i][j])return 0;
    return 1;
}
int main()
{
	n=read();m=read();
    for(int i=1;i<=n;i++)scanf("%s",s[i]+1);
    for(int i=1;i<=n;i++)
    {
    	for(int j=1;j<=m;j++)
	    {
	        if(s[i][j]=='O')a[i][j]=1;
	        else a[i][j]=0;
	    }
	}
    for(int i=1;i<=n;i++)scanf("%s",t[i]+1);
    for(int i=1;i<=n;i++)
    {
    	for(int j=1;j<=m;j++)
        {
            if(t[i][j]=='O')b[i][j]=1;
            else b[i][j]=0,cnt1[i]++,cnt2[j]++;
        }
	}
    if(check())cout<<"1"; 
    else if(run1()||run2())cout<<"0";
    else if(solve())cout<<"1";
    else cout<<"0";
    return 0;
}

详细

小提示:点击横条可展开更详细的信息

Subtask #1:

score: 20
Accepted

Test #1:

score: 20
Accepted
time: 0ms
memory: 1256kb

input:

4 4
OOOX
XXXX
OOXO
XXOO
OOXX
OOOO
XOOX
XOOX

output:

0

result:

ok "0"

Test #2:

score: 0
Accepted
time: 0ms
memory: 1264kb

input:

4 4
OXXO
OXOX
XOOX
XOOO
OOOO
OXOO
OXXX
XOOO

output:

0

result:

ok "0"

Test #3:

score: 0
Accepted
time: 0ms
memory: 1264kb

input:

4 4
OOXX
XXOX
OXOX
XXXX
XXOO
XOXO
OOOX
XXXO

output:

0

result:

ok "0"

Test #4:

score: 0
Accepted
time: 0ms
memory: 1268kb

input:

4 4
XXXX
XXOO
OXOX
XXXO
OXXO
OOOX
XOOO
OXXO

output:

1

result:

ok "1"

Test #5:

score: 0
Accepted
time: 1ms
memory: 1264kb

input:

4 4
XOOO
XXXX
XOOX
XOXO
OXOO
XOOO
XOOO
OOOO

output:

1

result:

ok "1"

Test #6:

score: 0
Accepted
time: 0ms
memory: 1272kb

input:

4 4
OOOO
XOOO
OOOO
OXOX
OOXO
OOOO
OOOX
OOOO

output:

1

result:

ok "1"

Subtask #2:

score: 30
Accepted

Test #7:

score: 30
Accepted
time: 0ms
memory: 1704kb

input:

50 50
XOOOOOXOXXOOOOXXOOOXXXXXXOOOOOXOXOXXXXOXOOXXXXXOOO
OXOOXOOOOXXOOOOXOOXXXOOXXXXXOXXOXOXXOOOXOXO...

output:

0

result:

ok "0"

Test #8:

score: 0
Accepted
time: 0ms
memory: 1708kb

input:

50 50
XXXXXOXXOOOOXXOXOOXOOOOXXOOOOXOOXOOOXXOOOOOXOXXXOO
OXXXOXXXOOXOOXXXOOXOXXXOXOOXOOOXOXXXXXXXXXO...

output:

0

result:

ok "0"

Test #9:

score: 0
Accepted
time: 0ms
memory: 1708kb

input:

50 50
XOOOOOXOOOOXXOXXOXXOOXXOXXOXOXOOOXXXOXXXXOOXOOOXXO
OOOOXXXOXOOOXXXXOOXOXXXOOOXXOXOOOXXOXXOOOXX...

output:

0

result:

ok "0"

Test #10:

score: 0
Accepted
time: 0ms
memory: 1728kb

input:

50 50
OOOXXXOOXXOOOXOXOOXXOOXXOOXOXXXXOOXOOOOOXXXOXOOXOO
XXXXXOXXXXXXXOOOOXXXOXXXOXOXXXOOXXOOOOOXXXX...

output:

1

result:

ok "1"

Test #11:

score: 0
Accepted
time: 0ms
memory: 1732kb

input:

50 50
OXXOOXOOXXOXXXOOXOXOXXXOXXOXOOOXOOOXOOOOOOOOOOOOXO
XXXOOXOOXXXOOOOXOXOOXXXOXOXOXOXOOXXOOOXOXXO...

output:

1

result:

ok "1"

Test #12:

score: 0
Accepted
time: 0ms
memory: 1724kb

input:

50 50
XOOOXXXXOXOXXXXOXOOXXXOOOXXOOXXOOOXXOXXXOOXOOXXOOX
OOXXXOXOOXOOOOXXOXXOXOXOOOOOXOOOXOXOOXXXXOO...

output:

1

result:

ok "1"

Subtask #3:

score: 50
Accepted

Test #13:

score: 50
Accepted
time: 7ms
memory: 11092kb

input:

1000 1000
XXOXOOXOOXOXXXXOOOXXOXOXOXXOXOXOOXOOOOXXOOOXOOOOXOOOOOXXOXXXOXOOXXXOXXXOXOOOXXXXOXOOOOOXXO...

output:

0

result:

ok "0"

Test #14:

score: 0
Accepted
time: 16ms
memory: 11088kb

input:

1000 1000
XXOXXOXOXXXOOOXOOOXOOXXXOOOOXXOXXOXXXOOXOXOOOOXXOXXXXXOOOXOXXXXOOOOOXOXOOOXXOXXXXXXOXOXXXO...

output:

0

result:

ok "0"

Test #15:

score: 0
Accepted
time: 18ms
memory: 11092kb

input:

1000 1000
OXOOXXOXXXXXOXXXXXOXXOXOXXXOXOXOOOXOXOOXOOXOXXOXOXXOOXXOXXOXXOXOOXOOXXOOXXXXXOXOXOXOOOOXOX...

output:

0

result:

ok "0"

Test #16:

score: 0
Accepted
time: 21ms
memory: 11104kb

input:

1000 1000
OOOXOXOOOOXOXXOXXOOOXOXXOXXOOOOOXOOOOXXOOOXOOOXXXOOOXOOOOXXOOXXOOOOXOOOXXOXXOXXOOOXXOXOXXX...

output:

1

result:

ok "1"

Test #17:

score: 0
Accepted
time: 11ms
memory: 11116kb

input:

1000 1000
XXOXXXXXXXXXOXOOXOXOOXXXOOOOOOOOOXOXOOXOXXOOOXXOXOXOOXOOXOXOXOXXXOXOXXXXOOXXXXOXOXOOXXXXOX...

output:

1

result:

ok "1"

Test #18:

score: 0
Accepted
time: 13ms
memory: 11108kb

input:

1000 1000
XXXXXOOOXXOXOOOOXXOOXOOXXOOOXXXXXXXOXXXXXXXOOOXOXOXXXOXXOXXOXXOOOOXOOXOOXOXOOXOOXOOXOXOXXO...

output:

1

result:

ok "1"

Extra Test:

score: 0
Extra Test Passed