专栏文章

scope

个人记录参与者 1已保存评论 0

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
0 条
当前快照
1 份
快照标识符
@mimxm1q8
此快照首次捕获于
2025/12/01 17:13
3 个月前
此快照最后确认于
2025/12/01 17:13
3 个月前
查看原文
CPP
#include<bits/stdc++.h>
using namespace std;
int dx[4]={0,0,1,-1},dy[4]={1,-1,0,0};
int n,m;
vector <vector <char> > mp;
struct Pair{
	int x,y;
};
bool check(Pair p)
{
	return p.x>=1&&p.x<=n&&p.y>=1&&p.y<=m&&mp[p.x][p.y]!='E';
}
bool Bfs(Pair st)
{
	map <char,int> fmp;
	deque <Pair> dq;
	dq.push_back(st);
	while(!dq.empty())
	{
		Pair cur=dq.front();
		dq.pop_front();
		fmp[mp[cur.x][cur.y]]++;
		mp[cur.x][cur.y]='E';
		for(int i=0;i<4;i++)
		{
			Pair next={cur.x+dx[i],cur.y+dy[i]};
			if(check(next))
				dq.push_back(next);
		}
	}
	return fmp['T']>=2&&fmp['W']>=1&&fmp['H']>=3&&fmp['Y']>=2;
}
int cnt;
int main()
{
	scanf("%d%d",&n,&m);
	mp.resize(n+1,vector<char>(m+1));
	for(int i=1;i<=n;i++)
		for(int j=1;j<=m;j++)
			cin>>mp[i][j];
	for(int i=1;i<=n;i++)
		for(int j=1;j<=m;j++)
			if(mp[i][j]!='E')
				cnt+=Bfs({i,j});
	printf("%d\n",cnt);
	return 0;
}

评论

0 条评论,欢迎与作者交流。

正在加载评论...