Pagini recente » Cod sursa (job #1316265) | Cod sursa (job #1575497) | Cod sursa (job #2962413) | Cod sursa (job #2480521) | Cod sursa (job #145154)
Cod sursa(job #145154)
#include<stdio.h>
int oo,l,po[200][150],ok,ka,ce[20000],j,x,y,n,m,k,i,p,u,c[20000],a[20000],d[5]={-1,1};
char viz[20000];
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;
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;
}
}
}
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;
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;
}
}
// 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;
}