请求添加标签,更改难度
  • 板块P1141 01迷宫
  • 楼主CD43
  • 当前回复1
  • 已保存回复1
  • 发布时间2025/7/24 14:55
  • 上次更新2025/7/24 15:37:05
查看原帖
请求添加标签,更改难度
755114
CD43楼主2025/7/24 14:55

该题目可以使用DFS做出,代码如下

#include<bits/stdc++.h>
using namespace std;
string a[1001];
int n,m;
int b[1001][1001];
int c[10000001];
int dfs(int x,int y,int t,string k)
{
	if(x<=0||x>n||y<0||y>=n)return 0;
	if(b[x][y]!=0)return 0;
	if(a[x][y]==k[0])return 0;
	c[t]++;
	b[x][y]=t;
	k[0]=a[x][y];
	dfs(x+1,y,t,k);
	dfs(x,y+1,t,k);
	dfs(x-1,y,t,k);
	dfs(x,y-1,t,k);
	return 0;
}
int main()
{
	ios::sync_with_stdio(false);
    cin.tie(0);cout.tie(0);
    cin>>n>>m;
    for(int i=1;i<=n;i++)
    {
    	cin>>a[i];
	}
	for(int i=1;i<=n;i++)
	{
		for(int j=0;j<n;j++)
		{
			if(b[i][j]==0)
			{
				string k="0";
				k[0]='2';
				dfs(i,j,i*n+j,k);
			}
		}
	}
	int x,y;
	for(int i=1;i<=m;i++)
	{
		cin>>x>>y;
		cout<<c[b[x][y-1]]<<'\n';
	}
    return 0;
}

该题目可以使用DFS做出,应添加标签 “DFS” 该题目仅需要基础的搜索与并查集思想即可做出,总体难度不大,我认为应当调为橙色

2025/7/24 14:55
加载中...