Submission #1061877

#TimeUsernameProblemLanguageResultExecution timeMemory
1061877sikai004Tracks in the Snow (BOI13_tracks)C++14
29.79 / 100
2101 ms94400 KiB
#include <bits/stdc++.h> using namespace std; int main(){ ios_base::sync_with_stdio(false); cin.tie(NULL); int row, col; cin>>row>>col; char meadow[row][col]; int vis[row][col]; for(int i=0;i<row;i++){ fill(vis[i],vis[i]+col,0); } for(int i=0;i<row;i++){ for(int j=0;j<col;j++){ cin>>meadow[i][j]; } } int numberoftimes=0; int dx[4] = {0, 0, -1, 1},dy[4] = {1, -1, 0, 0}; //dx and dy stores the way to get to the adjacent nodes for(int i=0;i<row;i++){ for(int j=0;j<col;j++){ if(vis[i][j]==0 and (meadow[i][j]=='F' or meadow[i][j]=='R')){ numberoftimes++; queue<pair<int, int> > q; //pair contains <y_coord, x_coord> char currchar=meadow[i][j]; q.push(make_pair(i, j)); //push the starting node while (!q.empty()) { int y = q.front().first; int x = q.front().second; vis[y][x]=1; q.pop(); for (int i = 0; i < 4; i++) { int new_y = y + dy[i], new_x = x + dx[i]; //adjacent nodes if(new_y>=0 and new_y<row and new_x>=0 and new_x<col and meadow[new_y][new_x]==currchar){ char changedchar; if(currchar=='F') changedchar='R'; else changedchar='F'; meadow[new_y][new_x]=changedchar; q.push(make_pair(new_y, new_x)); } //check if new node is within bounds, not visited and reachable (code for if it is not) } } } } } /* for(int i=0;i<row;i++){ for(int j=0;j<col;j++){ cout<<meadow[i][j]<<" "; } cout<<"\n"; } for(int i=0;i<row;i++){ for(int j=0;j<col;j++){ cout<<vis[i][j]<<" "; } cout<<"\n"; } */ cout<<numberoftimes; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...