懒羊羊找朋友
校内测崩了。
一道bfs水题读错题目。
#include <cstdio>
#include <queue>
#include <algorithm>
using namespace std;
typedef long long int ll;
const int maxn=105;
struct wjz{
	int x,y,d;
};
bool cmp(wjz a,wjz b){
	if(a.d=b.d){
		if(a.x==b.x){
			return a.y<b.y;
		}
		else{
			return a.x<b.x;
		}
	}else{
		return a.d<b.d;
	}
}
queue<wjz>q;
int dx[4]={-1,0,0,1};
int dy[4]={0,-1,1,0};
int n,m;
int a,b,tot;
wjz ans[maxn];
int s[maxn][maxn];
bool vis[maxn][maxn];
int main(){
	scanf("%d%d",&n,&m);
	scanf("%d%d",&a,&b);
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			scanf("%d",&s[i][j]);
		}
	}
	q.push(wjz{a,b,0});
	vis[a][b]=1;
	while(!q.empty()){
		wjz x=q.front();
		q.pop();
		for(int i=0;i<4;i++){
			int ax=x.x+dx[i],ay=x.y+dy[i];
			if((s[ax][ay]==s[a][b])&&(ax!=a||ay!=b)){
				ans[++tot].x=ax;ans[tot].y=ay;ans[tot].d=x.d+1;
			}
			if(!vis[ax][ay]&&ax<=m&&ax>=1&&ay<=n&&ay>=0){
				vis[ax][ay]=1;
				q.push(wjz{ax,ay,x.d+1});
			}
		}
	}
	sort(ans+1,ans+1+tot,cmp);
	printf("%d %d\n",ans[1].x,ans[1].y);
	return 0;
}
 
                    
                     
                    
                 
                    
                 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号