???40分???在逗我
查看原帖
???40分???在逗我
226483
King__Norman楼主2021/8/29 12:02

……………… 我瞬间感到我菜了…………

样例过了,第二个测试点………… 太长了

dalao们帮我康康哪挂了

万分感谢!!

#include<bits/stdc++.h>
using namespace std;
struct node
{
	int x,y,step;
}
a[1000001];
int dx[4]={0,1,0,-1},dy[4]={1,0,-1,0},head,tail,n,m,ex,ey;
int ans[1000001]={0};
char s[1001][1001],o[1];
bool used[1001][1001];
void dfs(int r)
{
    head=1;
    tail=0;
    a[1].x=ex;
    a[1].y=ey;
    int step=1;
    tail++;
    used[a[1].x][a[1].y]=r;
    while(head<=tail)
    {
		for(int i=0;i<4;i++)
        {
            int xx=a[head].x+dx[i];
            int yy=a[head].y+dy[i];
            if(xx>0&&xx<=n&&yy>0&&yy<=n&&s[xx][yy]!=s[a[head].x][a[head].y]&&used[xx][yy]==0)
            {
                tail++;
                a[tail].x=xx;
                used[xx][yy]=r;
                a[tail].y=yy;
                step++;
            }
        }
        head++;
    }
    ans[r]=step;
}
int main()
{
cin>>n>>m;
gets(o);
for(int i=1;i<=n;i++)
 gets(s[i]+1);
for(int i=1;i<=m;i++)
 {
 	scanf("%d %d",&ex,&ey);
 	if(used[ex][ey]!=0)
 	  printf("%d\n",ans[used[ex][ey]]);
    else{
    	dfs(i);
	    printf("%d\n",ans[i]);
	}
 }   
return 0;

}

2021/8/29 12:02
加载中...