#include <bits/stdc++.h>
using namespace std;
int a[110][110],n,m,ans=-1;
void dfs(int x,int y,bool z,int w,int c){
if(x<=0||x>m||y<=0||x>m||!a[x][y]&&z==true||c>=ans&&ans!=-1)return;
if(w!=a[x][y]) c++;
if(!a[x][y]){c+=2;z=true;}
if(a[x][y]&&z==true) z=false;
dfs(x+1,y,z,a[x][y],c);
dfs(x-1,y,z,a[x][y],c);
dfs(x,y+1,z,a[x][y],c);
dfs(x,y-1,z,a[x][y],c);
}
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
int e,b,c;
cin>>e>>b>>c;
a[e][b]=c+1;
}
dfs(1,1,false,a[1][1],0);
cout<<ans;
}
之前求助过一次,发现代码太复杂,就改了一下,但现在好像死循环了