제출 #1120257

#제출 시각아이디문제언어결과실행 시간메모리
1120257vjudge1Tracks in the Snow (BOI13_tracks)C++14
2.19 / 100
1263 ms637632 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 dfs(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){
                dfs(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;
    for(int i=0; i<n; i++){
        for(int j=0; j<m; j++){
            if(a[i][j]==start){
                if(used[i][j]==0){
                    dfs(i, j);
                    cnt++;
                }
            }
        }
    }
    if(ans==2){
        cnt++;
    }
    cout<<cnt<<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...