#10WA了,大神求助
查看原帖
#10WA了,大神求助
697359
jennycai13楼主2023/7/3 17:54
#include<bits/stdc++.h>
using namespace std;
const int M=105;
int f[M][M],a[M][M],n,m;//f[i][j],在i,j的位置花费金币最小值,a存颜色
int dx[4]={-1,0,1,0},dy[4]={0,-1,0,1};
bool st[M][M];
int main()
{
	int x1,y1;
	cin>>m>>n;
	memset(f,0x3f,sizeof(f));
	memset(a,-1,sizeof(a));
	for(int i=1;i<=n;i++)
	{
		int x,y,c;
		cin>>x>>y>>c;
		a[x][y]=c;
	}
	f[1][1]=0;
	for(int i=1;i<=m;i++)
	{
		for(int j=1;j<=m;j++)
		{
			for(int k=0;k<4;k++)
			{
				int x=i+dx[k],y=j+dy[k];
				if(x>0&&y>0&&x<=m&&y<=m)
				{
					if(a[i][j]!=-1)//有颜色 
					{
						if(a[x][y]==a[i][j])
						{
							f[i][j]=min(f[i][j],f[x][y]);
						}
						else if(a[x][y]!=a[i][j])
						{
							f[i][j]=min(f[i][j],f[x][y]+1);
						}	
					}
					else//没颜色 
					{
						st[i][j]=true;
						if(!st[x][y] and f[x][y]+2<f[i][j])
						{
							f[i][j]=min(f[i][j],f[x][y]+2);
							x1=x,y1=y;
						}
					}
				}

			}
			if(a[i][j]==-1)
			{
				a[i][j]=a[x1][y1];
			}
		}
	} 
	if(f[m][m]==0x3f3f3f3f)cout<<"-1";
	else cout<<f[m][m];                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
} 
2023/7/3 17:54
加载中...