懒羊羊找朋友
校内测崩了。
一道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;
}