Cod sursa(job #254480)

Utilizator ssergiussSergiu-Ioan Ungur ssergiuss Data 7 februarie 2009 12:22:17
Problema Kdrum Scor 20
Compilator cpp Status done
Runda Stelele Informaticii 2009, clasele 9-10, ziua 2 Marime 1.01 kb
#include<algorithm>
using namespace std;
int n,m,k,x1,y1,x2,y2,a[51][51];
const int di[]={-1,1,0,0},dj[]={0,0,-1,1};
struct coada{
    int x,y;};
coada c[2501];
void lee(){
    int i,st,dr;
    for(st=dr=1,c[st].x=x1,c[st].y=y1; st<=dr; ++st){
        for(i=0; i<4; ++i)
            if(!a[c[st].x+di[i]][c[st].y+dj[i]]){
                a[c[st].x+di[i]][c[st].y+dj[i]]=a[c[st].x][c[st].y]+1;
                c[++dr].x=c[st].x+di[i];
                c[dr].y=c[st].y+dj[i];}}}
void solve(){
    int i,j,nr;
    scanf("%d%d%d%d%d%d%d",&n,&m,&k,&x1,&y1,&x2,&y2);
    for(i=1; i<=n; ++i)
        for(j=1; j<=m; ++j){
            scanf("%d",&nr);
            if(nr==0)
                a[i][j]=-1;
            else
                a[i][j]=0;}
    for(i=0; i<n+2; ++i)
        a[i][0]=a[i][m+1]=-1;
    for(i=0; i<m+2; ++i)
        a[0][i]=a[n+2][i]=-1;
    lee();
    printf("%d",a[x2][y2]+1);}
int main(){
    freopen("kdrum.in","r",stdin);
    freopen("kdrum.out","w",stdout);
    solve();
    return 0;}