Cod sursa(job #2191394)

Utilizator iulius510iulius alexandru iulius510 Data 2 aprilie 2018 18:54:54
Problema BFS - Parcurgere in latime Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.22 kb
#include <fstream>

using namespace std;
ifstream f("padure.in");
ofstream g("padure.out");
int N,M,p1,pc,c1,cc,a[1001][1001],d[1001][1001];
int X[]={0,-1,0,1},Y[]={-1,0,1,0},p=1,l=1;;
struct nod{int x,y;}C[1000001];
void nod(int q,int r,int val) //Facem nodul
{
    d[q][r]=val;
    if(q==c1&&r==cc)
        g<<d[q][r]-104;
    else
    for(int i=0;i<=3;i++)
            if(a[q+X[i]][r+Y[i]]==a[q][r]&&d[q+X[i]][r+Y[i]]<104&&q+X[i]>=1&&q+X[i]<=N&&r+Y[i]>=1&&r+Y[i]<=M)
           {l++;
               C[l].x=q+X[i];
               C[l].y=r+Y[i];
               nod(q+X[i],r+Y[i],val);
           }
}

int main()
{ f>>N>>M>>p1>>pc>>c1>>cc;
  for(int i=1;i<=N;i++)
    for(int j=1;j<=M;j++)
    f>>a[i][j];
    C[1].x=p1;
    C[1].y=pc;
    d[p1][pc]=104;
    p=1;l=1;
    nod(p1,pc,104);
    while(p<=l)
    {
         for(int i=0;i<=3;i++)
            if(a[C[p].x+X[i]][C[p].y+Y[i]]!=a[C[p].x][C[p].y]&&d[C[p].x+X[i]][C[p].y+Y[i]]<104&&C[p].x+X[i]>=1&&C[p].x+X[i]<=N&&C[p].y+Y[i]>=1&&C[p].y+Y[i]<=M)
           {l++;
               C[l].x=C[p].x+X[i];
               C[l].y=C[p].y+Y[i];
               nod(C[p].x+X[i],C[p].y+Y[i],d[C[p].x][C[p].y]+1);
           }
           p++;
    }

  return 0;
}