蒟蒻求助!!!(bfs大法好
  • 板块学术版
  • 楼主I_am_emoing
  • 当前回复4
  • 已保存回复4
  • 发布时间2023/1/21 16:20
  • 上次更新2023/10/24 03:25:27
查看原帖
蒟蒻求助!!!(bfs大法好
648475
I_am_emoing楼主2023/1/21 16:20

题目传送门

奉上本地CE但洛谷MLE的蒟蒻代码:

#include<iostream>
#include<cstdio>
#include<string>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<ctime>
#include<queue>
#include<stack>
#include<map>
using namespace std;
long long a[185][185],b[185][185],n,m,x,y,dx[4]={-1,1,0,0},dy[4]={0,0,-1,1};
char num;
bool visited[185][185];
struct p{
	int x,y,t;
}; 
p p1,p2,p3;
void bfs()
{
	queue<p>q;
	p1.x=x,p1.y=y;p1.t=0;
	visited[x][y]=1;
	q.push(p1);
	while(!q.empty())
	{
		p2=q.front();
		q.pop();
		for(int i=0;i<4;i++)
		{
			p3.x=p2.x+dx[i],p3.y=p2.y+dy[i],p3.t=p2.t+1;
			if(p3.x>=1&&p3.x<=n&&p3.y>=1&&p3.y<=m&&a[p3.x][p3.y]==0)
			{
				b[p3.x][p3.y]=p3.t;
				q.push(p3);
				visited[p3.x][p3.y]=1;
			}
		}
	}
}
int main()
{
	cin>>n>>m;
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=m;j++)
		{
                  cin>>num;
                  if(num=='1')
                  {
                      a[i][j]=1;
                  }else{
                      a[i][j]=0;
                  }
			b[i][j]=a[i][j];
		}
	}
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=m;j++)
		{
			if(a[i][j]==1)
			{
				x=i,y=j;
				bfs();
			}
		}
	}
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=m;j++)
		{
			cout<<b[i][j]<<' ';
		}
		cout<<endl;
	}
	return 0;
}

CE信息

2023/1/21 16:20
加载中...