01迷宫求助大佬!!!
  • 板块P1141 01迷宫
  • 楼主Mars_wq
  • 当前回复1
  • 已保存回复1
  • 发布时间2023/12/1 22:06
  • 上次更新2023/12/2 09:37:06
查看原帖
01迷宫求助大佬!!!
576198
Mars_wq楼主2023/12/1 22:06
#include<iostream>
#include<cstdio>
#include<queue>
#include<cstring>
#define ll long long 
using namespace std;
ll dx[]={0,1,0,-1};
ll dy[]={1,0,-1,0};
bool vis[1001][1001];
ll step[1001][1001];
ll ans;
char a[10015][1001];
ll n,m;
void bfs(ll x,ll y){
	memset(step,0x3f,sizeof step);
	queue<pair<ll,ll> >q;
	q.push(make_pair(x,y));
	vis[x][y]=1;
	step[x][y]=0;
	while(!q.empty()){
		pair<ll,ll> tmp=q.front();
		q.pop();
		ans++;
		for(ll i=0;i<4;i++){
			ll nx=tmp.first+dx[i],ny=tmp.second+dy[i];
			if(nx<1||nx>n||ny<1||ny>n)continue;
			if(vis[nx][ny]==1||a[tmp.first][tmp.second]==a[nx][ny])continue;
			vis[nx][ny]=1;
			q.push(make_pair(nx,ny));
			step[nx][ny]=step[tmp.first][tmp.second]+1;
		}
	}
}
int main(){
	scanf("%lld %lld", &n, &m); 
	char c;
	for (ll i = 1; i <= n; i++) {
	    for (ll j = 1; j <= n; j++) {
	        cin >> c;
	        a[i][j] = c - '0';
	    }
	}
	ll x,y;
	for(ll i=1;i<=m;i++){
		memset(vis,0,sizeof vis);
		cin>>x>>y;
		ans=0;
		bfs(x,y);
		printf("%lld\n", ans);
	}
	return 0;
}

TLE 3个点求助大佬!!!!

2023/12/1 22:06
加载中...