求助为什么不输出P1141
  • 板块题目总版
  • 楼主Muzzlex
  • 当前回复2
  • 已保存回复2
  • 发布时间2022/1/22 13:08
  • 上次更新2023/10/28 11:34:29
查看原帖
求助为什么不输出P1141
464368
Muzzlex楼主2022/1/22 13:08
#include<bits/stdc++.h>
using namespace std; 
int n,m; 
int ans;
int a[1005][1005],vis[1005][1005];
int xx,yy;
int dx[]={0,0,1,-1},dy[]={-1,1,0,0};
bool check()
{
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=n;j++)
		{
			if(vis[i][j])return false;
		}
	}
	return true;
}
void dfs(int x,int y)
{ 
    if(vis[x][y]||x>n||x<1||y>n||y<1)return;
    vis[x][y]=true;
    ans++; 
    if(check())
    {
    	cout<<ans-1<<endl;
    	return;
	}
    for(int i=0;i<4;i++)
    {
        int aa,b;
        aa=x+dx[i];
        b=y+dy[i];
        if(a[x][y]&&!a[aa][b])dfs(aa,b);
        if(!a[x][y]&&a[aa][b])dfs(aa,b);
    }
}
int main()
{
    cin>>n>>m;
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=n;j++)
        {
            cin>>a[i][j];
        } 
    }
    for(int i=1;i<=m;i++)
    {
    	memset(vis,true,sizeof(vis));
        ans=0;
        cin>>xx>>yy; 
        dfs(xx,yy); 
    }
    return 0;
}
2022/1/22 13:08
加载中...