Cod sursa(job #1107871)

Utilizator krajlaKrajla Robert krajla Data 14 februarie 2014 17:06:46
Problema BFS - Parcurgere in latime Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.94 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("bfs.in");
ofstream fout("bfs.out");
int n,m,coada[100000],cont[100000];
bool viz[100000],graf[1000][1000];
void push(int a)
{   int i;
    for(i=1;coada[i]!=0;i++);
    coada[i]=a;
}
void pop()
{   int i;
    for( i=0;coada[i]!=0;i++)
       coada[i]=coada[i+1];

    coada[i-1]=0;

}
int main()
{

  int s,i,x,y,j;
  fin>>n>>m>>s;
  for(i=1;i<=m;i++)
    fin>>x>>y,graf[x][y]=true;
 coada[0]=s;
 viz[s]=true;
 int ok=0;
  do
    {   ok++;
        for(i=1;i<=n;i++)
            if(viz[i]==false&&graf[coada[0]][i]==true)
        {
            viz[i]=true;
            cont[i]=cont[coada[0]]+1;
            push(i);
            ok=1;


        }

        pop();



    }while(ok<=n);

for(i=1;i<=n;i++)
    if(viz[i]==true)
      fout<<cont[i]<<' ';
    else
        fout<<-1<<' ';


  fin.close();
  fout.close();
    return 0;
}