最后一个点WA
#include<bits/stdc++.h>
using namespace std;
struct Node{
int x,y;
}a[1005][105];
int f[1005][105],n,m,zdx,zdy,t,ans=1e9;
int dfs(int x,int y){
int cnt=0,nx=x,ny=y;
while(!f[nx][ny]){
// cout<<nx<<" "<<ny<<endl;
cnt+=abs(nx-a[nx][ny].x)*t;
f[nx][ny]=1;//标记
// cout<<a[nx][ny].x<<" "<<a[nx][ny].y<<endl;
if(nx==a[nx][ny].x&&ny==a[nx][ny].y) return cnt;
int tx=nx,ty=ny;//很重要!!!
nx=a[tx][ty].x,ny=a[tx][ty].y;//更新
}
return 1e9;
}
int main(){
cin>>n>>m>>t>>zdx>>zdy;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++){
int xx,yy;
cin>>xx>>yy;
a[i][j].x=xx,a[i][j].y=yy;
}
// for(int i=1;i<=n;i++){
// for(int j=1;j<=m;j++) cout<<a[i][j].x<<" "<<a[i][j].y<<"\t";
// cout<<endl;
// }
for(int i=1;i<=m;i++){
memset(f,0,sizeof f);
int cnt=dfs(1,i);
ans=min(ans,cnt);
}
if(ans==1e9) cout<<"impossible"<<endl;
else cout<<ans;
return 0;
}