文章

2

粉丝

0

获赞

2

访问

275

头像
存下到达每个地点所需时间,如果没有不可达地点而最大所需时间不为t,输出NO
P1126
发布于2026年4月6日 20:37
阅读数 90

#include <bits/stdc++.h>
using namespace std;

typedef struct node {
	int sx,sy;
	int step;
} node;

const int maxn=105;
char mpt[maxn][maxn];
int dis[maxn][maxn]; 
int vis[maxn][maxn];
int dir[4][2]= {0,1,1,0,0,-1,-1,0};

void bfs(int sx,int sy,int n,int m) {
	for(int i=1; i<=n; i++) {
		for(int j=1; j<=m; j++) {
			if(mpt[i][j]=='.') {
				dis[i][j]=-1;
			} else {
				dis[i][j]=-2;
			}

			vis[i][j]=0;
		}
	}
	queue<node> q;
	q.push({sx,sy,0});
	vis[sx][sy]=1;
	dis[sx][sy]=0;
	while(!q.empty()) {
		node now=q.front();
		q.pop();
		int x=now.sx ;
		int y=now.sy ;
		int step=now.step;

		for(int i=0; i<4; i++) {
			int nx=x+dir[i][0];
			int ny=y+dir[i][1];
			int nstep=step+1;
			if(nx<1||nx>n||ny<1||ny>m) continue;
			if(mpt[nx][ny]=='.'&&vis[nx][ny]==0) {
				q.push({nx,ny,nstep});
				vis[nx][ny]=1;
				dis[nx][ny]=nstep;
			}
		}
	}
}

int main() {
	int n,m,t;
	int sx,sy;
	while(c...
登录查看完整内容


登录后发布评论

暂无评论,来抢沙发