Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
31793 | 陈万瑄 | 螺旋矩阵 | C++ | 解答错误 | 0 | 0 MS | 264 KB | 778 | 2022-02-08 17:22:03 |
#include<bits/stdc++.h> using namespace std; const int dx[4]={0,1,0,-1},dy[4]={1,0,-1,0}; struct point{ int x,y; }; vector<point> t[3]; int n,m,h,ans=10000; char a[51][51]; void dfs(point b,int k){ t[k].push_back(b); a[b.x][b.y]='.'; for(int i=0;i<4;i++){ if(a[b.x+dx[i]][b.y+dy[i]]=='X') dfs({b.x+dx[i],b.y+dy[i]},k); } } int dis(point b,point c){ return abs(b.x-c.x)+abs(b.y-c.y)-1; } //int li_si_xian_ri_shan_ben int main(){ cin>>n>>m; for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++) cin>>a[i][j]; } for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ if(a[i][j]=='X') dfs({i,j},++h); } } for(int i=0;i<t[1].size();i++){ for(int j=0;j<t[2].size();j++){ ans=min(dis(t[1][i],t[2][j]),ans); } } cout<<ans; return 0; }