只有40pts,其他全TLE
查看原帖
只有40pts,其他全TLE
365597
Fruit_candy楼主2023/7/10 14:13
#include<bits/stdc++.h>
using namespace std;
int x1,y,n,m,ans;
int dir[4][2]={{1,0},{0,1},{-1,0},{0,-1}};
char a[200][200];
struct node{
	int x;
	int y;
	int t;
};
int vis[200][200];
queue<node> q;
void work(){
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			vis[i][j]=a[i][j]-'0';
		}
	}
}
void bfs(){
	while(!q.empty()){
		node e;
		e=q.front();
		q.pop();
		if(a[e.x][e.y]=='1'){
			ans=e.t;
			return;
		}
		for(int i=0;i<4;i++){
			int xx=e.x+dir[i][0],yy=e.y+dir[i][1];
			if(xx<=n&&xx>=1&&yy<=m&&yy>=1&&vis[xx][yy]!=-1){
				node g;
				g.x=xx,g.y=yy,g.t=e.t+1;
				q.push(g);
				vis[xx][yy]=-1;
			}
		}
	}
}

int main(){
	ios::sync_with_stdio(false);
	cin.tie(NULL);cout.tie(NULL);
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			cin>>a[i][j];
		}
	}
	
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			while(!q.empty())q.pop();
			x1=i;
			y=j;
			node u;
			u.x=i;
			u.y=j;
			u.t=0;
			q.push(u);
			work();
			bfs();	
			cout<<ans<<" ";
		}
		cout<<"\n";
	}
	return 0;
}

P2335可以过,这题不行,感觉不会超时啊?

2023/7/10 14:13
加载中...