제출 #48447

#제출 시각아이디문제언어결과실행 시간메모리
48447PajarajaTracks in the Snow (BOI13_tracks)C++17
78.13 / 100
1827 ms807624 KiB
#include <bits/stdc++.h> using namespace std; int t[4007][4007],vi[4007][4007],n,m; queue<pair<int,int> > q[3]; void dfs(int x,int y,int k) { if(x<0 || y<0 || x>=n || y>=m || vi[x][y]) return; if(t[x][y]!=k) { if(t[x][y]==3-k) q[3-k].push(make_pair(x,y)); return; } vi[x][y]=true; dfs(x-1,y,k); dfs(x+1,y,k); dfs(x,y-1,k); dfs(x,y+1,k); } int main() { int sol=0; cin>>n>>m; for(int i=0;i<n;i++) { string s; cin>>s; for(int j=0;j<m;j++) t[i][j]=(s[j]=='F'?2:(s[j]=='R'?1:0)); } q[t[0][0]].push(make_pair(0,0)); for(int i=0;i<5000;i++) { if(!q[1].empty()) { sol++; while(!q[1].empty()) { if(!vi[q[1].front().first][q[1].front().second]) dfs(q[1].front().first,q[1].front().second,1); q[1].pop(); } } if(!q[2].empty()) { sol++; while(!q[2].empty()) { if(!vi[q[2].front().first][q[2].front().second]) dfs(q[2].front().first,q[2].front().second,2); q[2].pop(); } } } printf("%d",sol); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...