Pagini recente » Cod sursa (job #1732711) | Cod sursa (job #584909) | Cod sursa (job #252484) | Cod sursa (job #1930937) | Cod sursa (job #145181)
Cod sursa(job #145181)
#include<stdio.h>
int oo,l,po[800][22000],ok,ka,ce[23000],j,x,y,n,m,k,i,p,u,c[23000],a[23000],d[5]={-1,1};
char viz[23000];
int main(){
FILE *f=fopen("castel.in","r");
fscanf(f,"%d %d %d",&n,&m,&k);
for(i=1;i<=n*m;i++){
fscanf(f,"%d",&a[i]);
}
fclose(f);
c[1]=k;
ce[k]=1;
viz[k]=-1;
d[2]=m;
d[3]=-m;
p=1;
u=1;
while(p<=u){
ok=0;
if(po[0][c[p]]>0){
for(l=1;l<=po[0][c[p]]>0;l++){
u++;
c[ u ]=po[l][c[p]];
ce[po[l][c[p]] ]=1;
//viz[c[p]]=-1;
}
po[0][c[p]]=0;
}
for(i=0;i<=1;i++){
if(c[p]%m==0){
x=c[p]/m-1;
}
else x=c[p]/m;
if((c[p]+d[i])%m==0){
y=(c[p]+d[i])/m-1;
}
else y=(c[p]+d[i])/m;
if(x==y&&viz[c[p]+d[i]]!=-1){
if(ce[ a[c[p]+d[i]] ]==1){
u++;
c[ u ]=c[p]+d[i];
viz[c[p]+d[i]]=-1;
ce[ c[p]+d[i]]=1;
// ok=1;
/* if(po[0][c[p]+d[i]]>0){
for(l=1;l<=po[0][c[p]+d[i]]>0;l++){
u++;
c[ u ]=po[l][c[p]+d[i]];
//viz[c[p]+d[i]]=-1;
}
po[0][c[p]+d[i]]=0;
}
*/
}
else{
po[0][ a[c[p]+d[i]] ]++;
oo=po[0][ a[c[p]+d[i]] ];
po [ oo ][ a[c[p]+d[i]] ]=c[p]+d[i] ;
viz[c[p]+d[i]]=-1;
}
}
}
for(i=2;i<=3;i++){
if(c[p]+d[i]>=1&&c[p]+d[i]<=n*m&&viz[c[p]+d[i]]!=-1){
if( ce[ a[c[p]+d[i]] ]==1){
u++;
c[ u ]=c[p]+d[i];
viz[c[p]+d[i]]=-1;
ce[ c[p]+d[i]]=1;
// ok=1;
}
else{
po[0][ a[c[p]+d[i]] ]++;
oo=po[0][ a[c[p]+d[i]] ];
po[oo][ a[c[p]+d[i]] ]=c[p]+d[i];
viz[c[p]+d[i]]=-1;
}
}
}
// if(ok)p=0;
p++;
}
FILE *g=fopen("castel.out","w");
fprintf(g,"%d",u);
fclose(g);
return 0;
}