码迷,mamicode.com
首页 > 其他好文 > 详细

test2

时间:2020-10-20 16:35:04      阅读:25      评论:0      收藏:0      [点我收藏+]

标签: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;
}

test2

标签:turn   main   c++   mes   std   name   ==   size   amp   

原文地址:https://www.cnblogs.com/org0/p/13845831.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!