1 条题解
-
0
#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
- 上传者