标签:turn main c++ mes std name == size amp
#include <bits/stdc++.h>
using namespace std;
int a[103][103],m,xx[4]={0,0,1,-1},yy[4]={1,-1,0,0},f[103][103];
bool mp[103][103];
void dfs(int x,int y,int s,bool g)
{
if(f[x][y]<=s) return ;
f[x][y]=s;
if(x==m&&y==m)
return ;
for(int i=0;i<=3;++i)
{
int xi=x+xx[i],yi=y+yy[i];
if(xi>=1&&xi<=m&&yi>=1&&yi<=m&&mp[xi][yi]==0)
{
if(a[xi][yi]==-1)
{
if(g==0)
continue;
a[xi][yi]=a[x][y];
mp[xi][yi]=1;
dfs(xi,yi,s+2,0);
mp[xi][yi]=0;
a[xi][yi]=-1;
continue;
}
if(a[x][y]==a[xi][yi])
{
mp[xi][yi]=1;
dfs(xi,yi,s,1);
mp[xi][yi]=0;
continue;
}
mp[xi][yi]=1;
dfs(xi,yi,s+1,1);
mp[xi][yi]=0;
}
}
}
int main()
{
//freopen("1.in","r",stdin);
//freopen("sol.out","w",stdout);
memset(a,-1,sizeof(a));
memset(mp,0,sizeof(mp));
memset(f,63,sizeof(f));
int n;
cin>>m>>n;
for(int i=1;i<=n;++i)
{
int x,y,v;
scanf("%d%d%d",&x,&y,&v);
a[x][y]=v;
}
f[m][m]=9e7;
mp[1][1]=1;
dfs(1,1,0,1);
if(f[m][m]==9e7)
cout<<-1;
else
cout<<f[m][m];
return 0;
}
标签:turn main c++ mes std name == size amp
原文地址:https://www.cnblogs.com/org0/p/13845831.html