问题标题: 酷町堂:4759

1
0
已解决
黄子澄
黄子澄
中级天翼
中级天翼

4759   棋盘上的行走

 

Time Limit Exceeded:60分

 

 

黄子澄的测评结果:

 

测试点#1测评结果 : Accepted时间 : 32ms
测试点#2测评结果 : Accepted时间 : 64ms
测试点#3测评结果 : Accepted时间 : 32ms
测试点#4测评结果 : Accepted时间 : 32ms
测试点#5测评结果 : Accepted时间 : 52ms
测试点#6测评结果 : Accepted时间 : 244ms
测试点#7测评结果 : Time Limit Exceeded时间 : 1976ms偷看一下数据测试点#8测评结果 : Time Limit Exceeded时间 : 1988ms偷看一下数据测试点#9测评结果 : Time Limit Exceeded时间 : 1992ms偷看一下数据测试点#10测评结果 : Time Limit Exceeded时间 : 1988ms偷看一下数据

 

我的提交(cpp):

 
#include<iostream>
#include<string>
#include<cstring>
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<iomanip>
using namespace std;
int n,m,cnt,p,q,dir[5][2]={{},{-1,0},{1,0},{0,-1},{0,1}};
char map[1001][100001];
bool vis[1001][100001];
void dfs(int x,int y){
    cnt++;
    vis[x][y]=true;
    for(int i=1;i<=4;i++){
        int x2=x+dir[i][0],y2=y+dir[i][1];
        if(x2>=1&&y2>=1&&x2<=n&&y2<=n&&!vis[x2][y2]&&map[x2][y2]!=map[x][y]){
            dfs(x2,y2);
        }
    }
}
int main(){
    cin>>n>>m;
    for(int i=1;i<=n;i++){
        for(int j=1;j<=n;j++){
            cin>>map[i][j];
        }
    }
    for(int i=1;i<=m;i++){
        cnt=0;
        cin>>p>>q;
        dfs(p,q);
        memset(vis,0,sizeof(vis));
        cout<<cnt<<endl;
    }
    return 0;
}

0
0
我要回答