Cod sursa(job #254325)

Utilizator ConsstantinTabacu Raul Consstantin Data 7 februarie 2009 11:12:34
Problema Kdrum Scor 0
Compilator cpp Status done
Runda Stelele Informaticii 2009, clasele 9-10, ziua 2 Marime 1.05 kb
#include<stdio.h>
struct coada{int x,y;}c[1000000];
int i,j,k,l,m,n,x[53][53],v[53][53],L,C,p,q,x1,x2,y1,y2;
int dl[]={0,0,1,0,-1},dc[]={0,1,0,-1,0};

FILE *f=fopen("kdrum.in","r");
FILE *g=fopen("kdrum.out","w");
void caut2(){}

void caut1(){

while(p<=q)

        {for(i=1;i<=4;i++)
                {L=c[p].x+dl[i];
                C =c[p].y+dc[i];
                if(x[L][C]!=0&&L<=n&&C<=m&&L>0&&C>0)
                        {c[++q].x=L;
                        c[q].y=C;
                        v[L][C]=v[c[p].x][c[p].y]+1;
                        if(L==x2&&C==y2)
                                {fprintf(g,"%d",v[L][C]);
                                return ;}
                        }
               }
       p++;
       }
  }

int main(){
fscanf(f,"%d %d %d",&n,&m,&k);
fscanf(f,"%d %d %d %d",&x1,&y1,&x2,&y2);
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
        fscanf(f,"%d",&x[i][j]);
fclose(f);
p=1;
q=1;
c[1].x=x1;c[1].y=y1;
v[x1][y1]=1;
if(k==1)
        caut1();
else
        caut2();
fclose(f);
fclose(g);
return 0;}