比赛 |
近期练习题回顾 |
评测结果 |
AAAAAAAAAAAAAAAAAAAA |
题目名称 |
棋盘 |
最终得分 |
100 |
用户昵称 |
2018noip必胜! |
运行时间 |
0.018 s |
代码语言 |
C++ |
内存使用 |
13.74 MiB |
提交时间 |
2018-10-20 08:13:34 |
显示代码纯文本
#include <bits/stdc++.h>
using namespace std;
int ans=999999 ;
int x[4]={1,-1,0,0};
int y[4]={0,0,1,-1};
int n = 0,m=0;int a[101][101]={0};int color[101][101]={-1}; int b=0,c=0,d=0 ;
int shensou(int x2,int y2, int col,int z,int M)
{ int x1,y1; if(x2==m&&y2==m)
{
if(M<ans)ans=M;
}
else{
for(int i = 0;i<4;i++)
{
x1=x2+x[i];
y1=y2+y[i];
if(x1>=1&&x1<=m&&y1>=1&&y1<=m&&a[x1][y1]>M)
{
if(color[x1][y1]>=0)
{
if(color[x1][y1]==col)
{
a[x1][y1]=M;shensou(x1,y1,col,0,M);
}
else {
a[x1][y1]=M+1;shensou(x1,y1,(col+1)%2,0,M+1);
}
}
else {
if(z==0&&a[x1][y1]>M+2)
{
a[x1][y1]=M+2;shensou(x1,y1,col,1,M+2);
}
}
}
} }
}
int main(void)
{
freopen("checkerboard.in","r",stdin); freopen("checkerboard.out","w",stdout);
cin>>m>>n;
for(int i=1;i<m+1;i++)
for(int j = 1;j<m+1;j++)
{
color[i][j]=-1;a[i][j]=99999;
}
for(int i = 1;i<n+1;i++)
{
cin>>b>>c>>d;color[b][c]=d;
}
shensou(1,1,color[1][1],0,0);
if(ans==999999)
{
cout<<-1;
}
else cout<<ans;
}