Pagini recente » Rezultatele filtrării | Cod sursa (job #92193)
Cod sursa(job #92193)
#include<fstream.h>
long a[155][155],N,M,L,b[425550],c[155][155];
long long nr=0;
void citire(){
ifstream fin("castel.in");
fin>>N>>M>>L;
for (int i=0;i<N;i++)
for (int j=0;j<M;j++){
fin>>a[i][j];
c[i][j]=i*M+j+1;
if (c[i][j]==L)
a[i][j]=-1;}
fin.close();
}
long long numarare(){
b[L]=1;
nr=0;
short k=1;
while (k){
k=0;
for (int i=0;i<N;i++)
for (int j=0;j<M;j++)
if (a[i][j]==-1){
if (b[a[i][j+1]]==1&&a[i][j+1]!=-1&&j<M-1){
b[c[i][j+1]]=1;
a[i][j+1]=-1;
k=1;}
if (b[a[i][j-1]]==1&&a[i][j-1]!=-1&&j>0){
b[c[i][j-1]]=1;
a[i][j-1]=-1;
k=1;}
if (b[a[i+1][j]]==1&&a[i+1][j]!=-1&&i<N-1){
b[c[i+1][j]]=1;
a[i+1][j]=-1;
k=1;}
if (b[a[i-1][j]]==1&&a[i-1][j]!=-1&&i>0){
b[c[i-1][j]]=1;
a[i-1][j]=-1;
k=1;}
}
}
for (int t=0;t<N;t++)
for (int r=0;r<M;r++)
if (a[t][r]==-1)
nr++;
return nr;
}
int main(){
citire();
ofstream fout("castel.out");
fout<<numarare();
fout<<"\n";
fout.close();
return 0;
}