60分求调
查看原帖
60分求调
1587828
Xsr18973021388楼主2025/1/22 12:27
#include<bits/stdc++.h>
using namespace std;
const int N=20;
const int N2=1e7+5;
const int dx[]={-1,0,0,1},dy[]={0,-1,1,0};
int m,n,n1,m1,n2,m2,s;
bool f;
int a[N][N],b[N][N],x2[N2],y2[N2];
void dfs(int x,int y){
	if(b[x][y]||a[x][y]!=1){
		return;
	}
	if(x==n2&&y==m2){
		for(int i=1;i<=s;i++){
			cout<<"("<<x2[i]<<","<<y2[i]<<")"<<"->";
		}
		cout<<"("<<n2<<","<<m2<<")"<<endl;
		f=1;
		return;
		
	}
	b[x][y]=1;
	s++;
	x2[s]=x;y2[s]=y;
	for(int i=0;i<4;i++){
    	dfs(x+dx[i],y+dy[i]);
	}
	s--;
	b[x][y]=0;
}
int main(){
    cin>>n>>m;
    for(int i=1;i<=n;i++){
    	for(int j=1;j<=m;j++){
    		cin>>a[i][j];
		}
	}
	cin>>n1>>m1;
	cin>>n2>>m2;
	dfs(n1,m1);
	if(!f) cout<<-1;
	return 0;
}
2025/1/22 12:27
加载中...