这两天突然觉得两空格缩进看着好舒服 感觉比四空格紧凑 连贯 hahahh
1 #include<bits/stdc++.h> 2 #define cl(a,b) memset(a,b,sizeof(a)) 3 #define debug(a) cerr<<#a<<"=="<<a<<endl 4 using namespace std; 5 typedef long long ll; 6 typedef pair<int,int> pii; 7 8 const int maxn=50+10; 9 10 int n,m,k,sx,sy; 11 int vis[maxn][maxn]; 12 int dx[maxn],dy[maxn]; 13 char mp[maxn][maxn]; 14 struct loc 15 { 16 pii point; 17 int step; 18 }; 19 20 bool check(pii x) 21 { 22 if(x.first<0||x.first>=n) return false; 23 if(x.second<0||x.second>=m) return false; 24 if(mp[x.first][x.second]=='X') return false; 25 return (!vis[x.first][x.second]); 26 } 27 28 int bfs() 29 { 30 loc st= {{sx,sy},0}; 31 queue<loc>q; 32 while(!q.empty()) q.pop(); 33 q.push(st); 34 int ans=-1; 35 while(!q.empty()) 36 { 37 loc now=q.front(); 38 q.pop(); 39 if(mp[now.point.first][now.point.second]=='.') ans=max(ans,now.step); 40 for(int i=0; i<k; i++) 41 { 42 int nextx=now.point.first+dx[i]; 43 int nexty=now.point.second+dy[i]; 44 pii next= {nextx,nexty}; 45 if(check(next)) 46 { 47 vis[next.first][next.second]=true; 48 q.push({next,now.step+1}); 49 } 50 } 51 } 52 return ans; 53 } 54 55 int main() 56 { 57 scanf("%d%d",&n,&m); 58 for(int i=0; i<n; i++) 59 { 60 scanf("%s",mp[i]); 61 } 62 scanf("%d%d",&sx,&sy); 63 vis[sx][sy]=true; 64 scanf("%d",&k); 65 for(int i=0; i<k; i++) 66 { 67 scanf("%d%d",&dx[i],&dy[i]); 68 } 69 int ans=bfs(); 70 for(int i=0; i<n; i++) 71 { 72 for(int j=0; j<m; j++) 73 { 74 if(!vis[i][j]&&mp[i][j]=='.') 75 { 76 //printf("%d %d ",i,j); 77 ans=-1; 78 } 79 } 80 } 81 printf("%d ",ans); 82 return 0; 83 }/* 84 85 10 10 86 .XXXXXXXX. 87 X.XXXXXX.X 88 XX.XXXX.XX 89 XXX.XX.XXX 90 XXXX..XXXX 91 XXXX..XXXX 92 XXXX.X.XXX 93 XXX.XXX.XX 94 XX.XXXXX.X 95 X.XXXXXXX. 96 0 0 97 18 98 0 9 99 9 0 100 0 -8 101 -8 0 102 0 7 103 7 0 104 0 -6 105 -6 0 106 0 5 107 5 0 108 0 -4 109 -4 0 110 0 3 111 3 0 112 0 -2 113 -2 0 114 0 1 115 1 0 116 117 118 */