#include <bits/stdc++.h>
using namespace std;
#define int long long
int a[101][101],f[101][101],n,m,x,y,z;bool v[101][101]={0};
signed main(){
cin>>n>>m;
for (int i=0;i<m;i++){
cin>>x>>y>>z;
a[x][y]=1+z;
v[x][y]=1;
}
f[0][0]=0;
for (int i=1;i<=n;i++)
for (int j=1;j<=n;j++){
if (i==1&&j==1) continue;
if (v[i-1][j]==0&&v[i][j-1]==0){
f[i][j]=114514;
v[i][j]=0;
}
if (a[i][j]==0){
if (v[i-1][j]==0) f[i][j]=f[i][j-1]+2,a[i][j]=a[i][j-1];
else if (v[i][j-1]==0) f[i][j]=f[i-1][j]+2,a[i][j]=a[i-1][j];
else if (v[i-1][j]>v[i][j-1]) f[i][j]=f[i][j-1]+2,a[i][j]=a[i][j-1];
else f[i][j]=f[i-1][j]+2,a[i][j]=a[i-1][j];
}
else{
if (a[i][j]!=a[i-1][j]&&a[i][j]!=a[i][j-1]) f[i][j]=1+min(f[i-1][j],f[i][j-1]);
else if (a[i][j]!=a[i-1][j]) f[i][j]=min(1+f[i-1][j],f[i][j-1]);
else if (a[i][j]!=a[i][j-1]) f[i][j]=min(f[i-1][j],1+f[i][j-1]);
else f[i][j]=min(f[i-1][j],f[i][j-1]);
}
}
f[n][n]>=114514?cout<<-1:cout<<f[n][n];
return 0;
}
QAQ
提交记录