dfs40pts求条
查看原帖
dfs40pts求条
1246104
AW_BCH楼主2024/12/13 18:56
#include<bits/stdc++.h>
using namespace std;
//#define int long long//
#define endl '\n'
#define emdl '\n'
typedef long long ll;
const int MAXN=505;
int n,m,a,b;
int mp[MAXN][MAXN];
int tx[]={0,0,0,1,-1};
int ty[]={0,1,-1,0,0};
void dfs(int x,int y,int s){
	for(int i=1;i<=4;i++){
		int dx=x+tx[i];
		int dy=y+ty[i];
		if(1<=dx&&dx<=n&&1<=dy&&dy<=m&&(mp[dx][dy]==-1||mp[dx][dy]>s)){
			mp[dx][dy]=s;
			dfs(dx,dy,s+1);
		}
	}
	return;
}
signed main(){
	ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
	cin>>n>>m>>a>>b;
	memset(mp,-1,sizeof(mp));
	for(int i=1,sr1,sr2;i<=a;i++){
		cin>>sr1>>sr2;
		mp[sr1][sr2]=0;
		dfs(sr1,sr2,1);
	}
	for(int i=1,sr1,sr2;i<=b;i++){
		cin>>sr1>>sr2;
		cout<<mp[sr1][sr2]<<endl;
	}
	return 0;
}

虽然我知道正解是 bfs ,但我就是想用 dfs ,所以各位dalao能帮我调一下吗?

2024/12/13 18:56
加载中...