1 条题解

  • 0
    @ 2026-8-9 8:48:44
    #include<bits/stdc++.h>
    using namespace std;
    int n,m,a[30][30],ans,d[30][30][30][30]; 
    int dx[4]={-1,1,0,0};
    int dy[4]={0,0,-1,1};
    queue<int> x2,y2;
    void bfs(int x,int y){
    	x2.push(x);
    	y2.push(y);
    	while(x2.size()!=0){
    		int xx=x2.front(),yy=y2.front();
    		x2.pop();y2.pop();
    		for(int k=0;k<4;k++){
    			int nx=xx+dx[k],ny=yy+dy[k];
    			if(x<=n&&y<=m&&x>=1&&y>=1&&nx<=n&&ny<=m&&nx>=1&&ny>=1&&a[xx][yy]!=1&&a[nx][ny]!=1&&d[x][y][nx][ny]==-1){
    				d[x][y][nx][ny]=d[x][y][xx][yy]+1;
    				ans=max(ans,d[x][y][nx][ny]);
    				x2.push(nx);y2.push(ny);
    			}
    		}
    	}
    }
    int main(){
    	memset(d,-1,sizeof(d));
    	cin>>n>>m;
    	for(int i=1;i<=n;i++)
    		for(int j=1;j<=m;j++){
    			char ch;
    			cin>>ch;
    			if(ch=='#')a[i][j]=1;
    			else a[i][j]=0;
    		}
    	int x,y;
    	for(int i=1;i<=n;i++){
    		for(int j=1;j<=m;j++){
    			if(a[i][j]==0){
    				d[i][j][i][j]=0;
    				bfs(i,j);
    			}
    		}
    	}
    	cout<<ans;
    	return 0;
    }
    
    • 1

    信息

    ID
    11802
    时间
    2000ms
    内存
    1024MiB
    难度
    7
    标签
    递交数
    21
    已通过
    9
    上传者