Pagini recente » Cod sursa (job #259529) | Cod sursa (job #1818201) | abcdefghijklmnopqrstuvwxyz | Cod sursa (job #163587) | Cod sursa (job #1503755)
#include<cstdio>
#include<vector>
using namespace std;
int a[160][160],q[23000],viz[160][160],am[23000];
int lin[4]={1,0,-1,0};
int col[4]={0,1,0,-1};
vector<int> chei[23000];
int main(){
freopen("castel.in","r",stdin);
freopen("castel.out","w",stdout);
int n,m,k,left=1,right=1,nod,nr=0,i,j;
scanf("%d%d%d",&n,&m,&k);
for(i=0;i<n;i++)
for(j=0;j<m;j++){
scanf("%d",&a[i][j]);
a[i][j]--;
}
k--;
viz[k/m][k%m]=1;
q[1]=k;
while(left<=right){
nr++;
nod=q[left];
am[nod]=1;
for(i=0;i<chei[nod].size();i++)
if(viz[chei[nod][i]/m][chei[nod][i]%m]==0){
right++;
q[right]=chei[nod][i];
viz[chei[nod][i]/m][chei[nod][i]%m]=1;
}
i=nod/m;
j=nod%m;
for(k=0;k<4;k++)
if(i+lin[k]>=0&&i+lin[k]<n&&j+col[k]>=0&&j+col[k]<m&&viz[i+lin[k]][j+col[k]]==0)
if(am[a[i+lin[k]][j+col[k]]]==0)
chei[a[i+lin[k]][j+col[k]]].push_back((i+lin[k])*m+j+col[k]);
else{
viz[i+lin[k]][j+col[k]]=1;
right++;
q[right]=(i+lin[k])*m+j+col[k];
}
left++;
}
printf("%d",nr);
return 0;
}