建议加强数据
查看原帖
建议加强数据
941801
louie2011楼主2025/1/23 16:20

数据过小,开 10050*10050 的数组能过。

record

代码:

#include<bits/stdc++.h>
using namespace std;
int r,c,a,b,ans;
//vector<char> arr[100050];
//vector<char> vis[100050];
char arr[10050][10050];
bool vis[10050][10050];
int dirx[4]={1,-1,0,0};
int diry[4]={0,0,1,-1};
int main()
{
	cin>>r>>c;
	for(int i=0;i<r;i++)
	{
		for(int j=0;j<c;j++)
		{
//			char tmp;
//			cin>>tmp;
//			arr[i].push_back(tmp);
//			vis[i].push_back(0);
			cin>>arr[i][j];
		}
	}
	cin>>a>>b;
	queue<int> qx,qy;
	qx.push(a);qy.push(b);
	vis[a][b]=1;
	if(arr[a][b]=='S')
	{
		ans+=1;
	}
	else if(arr[a][b]=='M')
	{
		ans+=5;
	}
	else if(arr[a][b]='L')
	{
		ans+=10;
	}
	while(!qx.empty())
	{
		int topx=qx.front(),topy=qy.front();
		qx.pop();qy.pop();
		for(int i=0;i<4;i++)
		{
			int newx=topx+dirx[i],newy=topy+diry[i];
			if(!(newx<0 || newx>=r || newy<0 || newy>=c || arr[newx][newy]=='*' || vis[newx][newy]))
			{
				qx.push(newx);
				qy.push(newy);
				vis[newx][newy]=1;
				if(arr[newx][newy]=='S')
				{
					ans+=1;
				}
				else if(arr[newx][newy]=='M')
				{
					ans+=5;
				}
				else if(arr[newx][newy]=='L')
				{
					ans+=10;
				}
			}
		}
	}
	cout<<ans;
	return 0;
}
2025/1/23 16:20
加载中...