제출 #101566

#제출 시각아이디문제언어결과실행 시간메모리
101566errorgornTracks in the Snow (BOI13_tracks)C++14
100 / 100
1550 ms781188 KiB
#include <cstdio>
#include <vector>
#include <algorithm>
#include <utility>
#include <queue>
using namespace std;
typedef pair<int,int> ii;
int r,c;
char arr[4005][4005];
bool pushed[4005][4005];
queue<ii> q;
int dx[]={1,-1,0,0},dy[]={0,0,1,-1};
void print(){
    for (int x=1;x<=r;x++){
        for (int y=1;y<=c;y++){
            printf("%c",arr[x][y]);
        }
        printf("\n");
    }
    printf("\n");
}
void dfs(int i,int j,char a){
    for (int x=0;x<4;x++){
        if (i+dx[x]<1 || i+dx[x]>r || j+dy[x]<1 || j+dy[x]>c) continue;
        if (arr[i+dx[x]][j+dy[x]]==a){
            arr[i+dx[x]][j+dy[x]]='.';
            dfs(i+dx[x],j+dy[x],a);
        }
        else if (arr[i+dx[x]][j+dy[x]]!='.'){
            if (!pushed[i+dx[x]][j+dy[x]])q.push(ii(i+dx[x],j+dy[x])),pushed[i+dx[x]][j+dy[x]]=true;
        }
    }
}
int main(){
    char curr_animal='?';
    int ans=0;
    //freopen("input.txt","r",stdin);
    scanf("%d%d",&r,&c);
    for (int x=1;x<=r;x++){
        getchar();
        for (int y=1;y<=c;y++){
            arr[x][y]=getchar();
        }
    }
    q.push(ii(1,1));
    q.push(ii(r,c));
    int a,b;
    while (!q.empty()){
        a=q.front().first,b=q.front().second,q.pop();
        //printf("%d %d\n",a,b);
        if (arr[a][b]=='.') continue;
        if (curr_animal!=arr[a][b]) curr_animal=arr[a][b],ans++;
        arr[a][b]='.';
        dfs(a,b,curr_animal);
    }
    printf("%d\n",ans);
}

컴파일 시 표준 에러 (stderr) 메시지

tracks.cpp: In function 'int main()':
tracks.cpp:38:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d%d",&r,&c);
     ~~~~~^~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...