70分,3个TLE
  • 板块P1141 01迷宫
  • 楼主ElfOfEra
  • 当前回复8
  • 已保存回复8
  • 发布时间2022/5/27 10:16
  • 上次更新2023/10/28 00:33:43
查看原帖
70分,3个TLE
301765
ElfOfEra楼主2022/5/27 10:16
// Problem: P1141 01迷宫
// Contest: Luogu
// URL: https://www.luogu.com.cn/problem/P1141
// Memory Limit: 125 MB
// Time Limit: 1000 ms
// 
// Powered by CP Editor (https://cpeditor.org)

#include<iostream>
using namespace std; 
int n,m,mx[4]={0,1,0,-1},my[4]={1,0,-1,0},ans,ansss[1001][1001];
char nn[1001][1001];
bool nnn[1001][1001],anss[1001][1001];
void dfs(int y,int x){
    if(y<1||y>n||x<1||x>n){
        return;
    }
    nnn[y][x]=1;
    ans++;
    for(int i=0;i<4;i++){
        if(nn[y+my[i]][x+mx[i]]!=nn[y][x]&&nnn[y+my[i]][x+mx[i]]==0){
            dfs(y+my[i],x+mx[i]);
        }
    }
    return;
}
int main(){
    cin>>n>>m;
    for(int i=1;i<=n;i++){
        for(int o=1;o<=n;o++){
            cin>>nn[i][o];
        }
    }
    for(int i=1;i<=m;i++){
        ans=0;
        int y,x;
        cin>>y>>x;
        dfs(y,x);
        if(anss[y][x]==0){
            dfs(y,x);
            anss[y][x]=1;
            ansss[y][x]=ans;
        }else ans=ansss[y][x];
        cout<<ans<<endl;
        for(int o=1;o<=n;o++){
            for(int p=1;p<=n;p++){
                nnn[o][p]=0;
            }
        }
    }
    return 0;
}
2022/5/27 10:16
加载中...