Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
31793 陈万瑄 螺旋矩阵 C++ 解答错误 0 0 MS 264 KB 778 2022-02-08 17:22:03

Tests(0/10):


#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; }


测评信息: