存一下代码 cf没有号
查看原帖
存一下代码 cf没有号
550689
eeeeSBsbsb楼主2024/12/7 14:54
#include<bits/stdc++.h>
using namespace std;
int n,m,xs,ys,l1,r1; 
char a[2005][2005];
int vis[2005][2005];
int dir[5][3]={{0,1},{0,-1},{1,0},{-1,0}};
int dirl[5]={0,1,0,0};
int dirr[5]={1,0,0,0};
struct node{
	int x,y,l,r;
};
node s[2005][2005];
queue<node> q;
int cnt=1;
void bfs(){
	q.push(node{xs,ys,0,0});
	vis[xs][ys]=1;
	s[xs][ys].l=0;
	s[xs][ys].r=0;
	while(!q.empty()){
		node t=q.front();
		for(int i=0;i<4;i++){
			int xx=t.x+dir[i][0];
			int yy=t.y+dir[i][1];
			int ll=t.l+dirl[i];
			int rr=t.r+dirr[i];
			if(xx>=1&&xx<=n&&yy>=1&&yy<=m&&a[xx][yy]!='*'&&ll<=l1&&rr<=r1){
				if(vis[xx][yy]==0){
					vis[xx][yy]=1;
					q.push(node{xx,yy,ll,rr});
					cnt++;
					s[xx][yy].l=ll;
					s[xx][yy].r=rr;
				}
				else if(vis[xx][yy]==1&&ll<s[xx][yy].l&&rr<s[xx][yy].r){
					q.push(node{xx,yy,ll,rr});
					s[xx][yy].l=ll;
					s[xx][yy].r=rr;
				}
			}
		}
		q.pop();
	}
}
int main(){
	cin>>n>>m>>xs>>ys>>l1>>r1;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			cin>>a[i][j];
		}
	} 
	bfs();
	cout<<cnt;
}

2024/12/7 14:54
加载中...