# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
520163 | krit3379 | Tracks in the Snow (BOI13_tracks) | C++14 | 1733 ms | 759112 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#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;
}
Compilation message (stderr)
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |