Submission #907447

#TimeUsernameProblemLanguageResultExecution timeMemory
907447arnavaiTracks in the Snow (BOI13_tracks)C++14
45.31 / 100
2174 ms1048576 KiB
#include <bits/stdc++.h> using namespace std; #define int long long typedef long long ll; typedef vector<int> vi; typedef vector<ll> vll; #define all(x) (x).begin(), (x).end() #define inf 1000000007 #define llmax LLONG_MAX #define pi 3.141592653589793238462643383279502884197169399 long long binpow(long long a, long long b) { long long res = 1; while (b > 0) { if (b & 1) res = res * a; a = a * a; b >>= 1; } return res; } ll ncr(int n, int r) { if (n < r) return 0; long long p = 1, k = 1; if (n - r < r) r = n - r; if (r != 0) { while (r) { p *= n; k *= r; long long m = __gcd(p, k); p /= m; k /= m; n--; r--; } } else p = 1; return p; } vector <ll> vcreate(int n){ vector <ll> v(n); for (int i = 0; i < n; i++) { cin>>v[i]; } return v; } void dfs(vector<vector<char>>&v, char z, int x, int y) { char find; if(z=='R') { v[x][y]='F'; find='R'; } else { v[x][y]='R'; find = 'F'; } int h = v.size(); int w = v[0].size(); int dx[] = {-1, 1, 0, 0}; int dy[] = {0,0,-1,1}; for(int i = 0; i<4; i++) { if(x+dx[i]>=0 and x+dx[i]<h and y+dy[i]>=0 and y+dy[i]<w and v[x+dx[i]][y+dy[i]]==find) { dfs(v, z, x+dx[i], y+dy[i]); } } } signed main() { ios::sync_with_stdio(false); cin.tie(nullptr); //freopen("input.txt", "r", stdin); //freopen("output.txt", "w", stdout); int h, w; cin>>h>>w; vector<vector<char>>v(h, vector<char>(w)); for(int i = 0; i<h; i++) { for(int j = 0; j<w; j++) { cin>>v[i][j]; } } int ans = 1; while(true) { char z = v[0][0]; dfs(v, z, 0, 0); ans++; set<char> s; for(int i =0; i<h; i++) { for(int j = 0; j<w; j++) { if(v[i][j]!='.') s.insert(v[i][j]); } } if(s.size()==1) break; } cout<<ans<<'\n'; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...