제출 #520163

#제출 시각아이디문제언어결과실행 시간메모리
520163krit3379Tracks in the Snow (BOI13_tracks)C++14
100 / 100
1733 ms759112 KiB
#include<bits/stdc++.h>
using namespace std;
#define N 4005
#define K 6000000

struct A{
    int x,y;
};

int sz,a[N][N],di[4]={1,-1,0,0},dj[4]={0,0,1,-1};
char s[N][N];
bitset<N> vis[N];
bitset<K> ch;
queue<A> q;
set<int> se[K];

int main(){
    int n,m,i,j,k,x,y,num;
    scanf("%d %d",&n,&m);
    for(i=1;i<=n;i++){
        scanf(" %s",s[i]+1);
    }
    for(i=1;i<=n;i++){
        for(j=1;j<=m;j++){
            if(s[i][j]=='.'||vis[i][j])continue;
            q.push({i,j});
            vis[i][j]=true;
            a[i][j]=++sz;
            while(!q.empty()){
                x=q.front().x;
                y=q.front().y;
                q.pop();
                a[x][y]=sz;
                for(k=0;k<4;k++){
                    int X=x+di[k],Y=y+dj[k];
                    if(X>0&&X<=n&&Y>0&&Y<=m&&s[x][y]==s[X][Y]&&!vis[X][Y])q.push({X,Y}),vis[X][Y]=true;
                    else if(X>0&&X<=n&&Y>0&&Y<=m&&s[x][y]!=s[X][Y]&&s[X][Y]!='.'&&a[X][Y])se[a[x][y]].insert(a[X][Y]),se[a[X][Y]].insert(a[x][y]);
                }
            }
        }
    }
    q.push({a[1][1],1});
    ch[a[1][1]]=true;
    while(!q.empty()){
        x=q.front().x;
        y=q.front().y;
        q.pop();
        for(auto num:se[x])if(!ch[num])ch[num]=true,q.push({num,y+1});
    }
    printf("%d",y);
    return 0;
}

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

tracks.cpp: In function 'int main()':
tracks.cpp:18:23: warning: unused variable 'num' [-Wunused-variable]
   18 |     int n,m,i,j,k,x,y,num;
      |                       ^~~
tracks.cpp:19:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   19 |     scanf("%d %d",&n,&m);
      |     ~~~~~^~~~~~~~~~~~~~~
tracks.cpp:21:14: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   21 |         scanf(" %s",s[i]+1);
      |         ~~~~~^~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...