Cod sursa(job #586894)

Utilizator dicu_dariaDaria Dicu dicu_daria Data 3 mai 2011 10:37:42
Problema Kdrum Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <fstream>
#include <queue>
using namespace std;
int l,c,d,k,i,j,n,m,ok,x1,x2,y1,y2,a[52][52];
typedef struct{int x,y,v,d;}coada;
coada x,y;
queue <coada> Q;
const int dx[4]={1,-1,0,0};
const int dy[4]={0,0,-1,1};
int main()
{
    ifstream fi("kdrum.in");
    ofstream fo("kdrum.out");
    fi>>n>>m>>k;
    fi>>x1>>y1>>x2>>y2;
    for(i=1;i<=n;i++)
      for(j=1;j<=m;j++)
      fi>>a[i][j];
    x.x=x1;
    x.y=y1;
    x.v=a[i][j]%k;
    x.d=1;
    Q.push(x);
    while(!Q.empty() and !ok)
    {
      x=Q.front();
      Q.pop();
      for(d=0;d<4;d++)
      {
        l=x.x+dx[d];
        c=x.y+dy[d];
        if(a[l][c]!=0)
        {
          y.x=l; y.y=c; y.v=(x.v*a[l][c])%k; y.d=x.d+1;
          if(l==x2 and c==y2 and y.v==0)
          { ok=y.d; break; }
          Q.push(y);
        }
      }
    }
    fo<<ok<<"\n";
    return 0;
}