Submission #1120351

#TimeUsernameProblemLanguageResultExecution timeMemory
1120351vjudge1Tracks in the Snow (BOI13_tracks)C++14
2.19 / 100
1403 ms639096 KiB
#pragma GCC optimize ("O1") #include <bits/stdc++.h> using namespace std; #define endl '\n' #define pb push_back #define F first #define S second #define ll long long #define int ll #define pii pair<int, int> #define io ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0) #define M_PI 3.14159265358979323846 #define all(v) v.begin(), v.end() #define pss pair<string, string> #define no cout<<"NO"<<endl; #define yes cout<<"YES"<<endl; #define imp cout<<-1<<endl; #define flu cout.flush(); #define Endl endl const int N = 100009; const int mod = 1e9+7; char a[4005][4005]; int used[4005][4005]; int dx[]={1, -1, 0, 0}; int dy[]={0, 0, -1, 1}; int n, m; char start; void dfsr(int x, int y){ used[x][y]++; for(int i=0; i<4; i++){ if(x+dx[i]>=0 and x+dx[i]<=n and y+dy[i]>=0 and y+dy[i]<=m){ if(used[x+dx[i]][y+dy[i]]==0 and a[x+dx[i]][y+dy[i]]==start){ dfsr(x+dx[i], y+dy[i]); } } } } void dfsf(int x, int y){ used[x][y]++; for(int i=0; i<4; i++){ if(x+dx[i]>=0 and x+dx[i]<=n and y+dy[i]>=0 and y+dy[i]<=m){ if(used[x+dx[i]][y+dy[i]]==0 and a[x+dx[i]][y+dy[i]]!=start){ dfsf(x+dx[i], y+dy[i]); } } } } void solve(){ cin>>n>>m; int cntf=0, cntr=0; for(int i=0; i<n; i++){ for(int j=0; j<m; j++){ char c; cin>>c; a[i][j]=c; if(c=='F'){ cntf++; } else if(c=='R'){ cntr++; } } } int ans=0; if(cntf>0){ ans++; } if(cntr>0){ ans++; } if(ans<2){ cout<<ans<<endl; return; } start=a[0][0]; for(int i=0; i<n; i++){ for(int j=0; j<m; j++){ if(a[i][j]=='.'){ a[i][j]=start; } } } int cnt=0, cnt2=0; for(int i=0; i<n; i++){ for(int j=0; j<m; j++){ if(a[i][j]==start){ if(used[i][j]==0){ dfsr(i, j); cnt++; } } else{ if(used[i][j]==0){ dfsf(i, j); cnt2++; } } } } cout<<min(cnt, cnt2)*2<<endl; /* FRFF FRRR FFFF FFRFFFFF FFRRRFFF FFFFFFFF FFRRRFFR FFFFFFFF */ } signed main(){ io; int t=1; //cin>>t; while(t--){ solve(); } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...