Cod sursa(job #771713)

Utilizator ionut_blesneagIonut Blesneag ionut_blesneag Data 26 iulie 2012 21:07:54
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.73 kb
#include<fstream>
using namespace std;

int n,m,s;
struct lista
{int nod;
 lista* next;};
lista* a[100001];


void add(int x, int y)
{lista* q = new lista;
 q->nod=y;
 q->next=a[x];
 a[x]=q;}

ifstream f("bfs.in");
ofstream g("bfs.out");

int i,viz[100001], coada[100001], begin,end;

int main()
{f>>n>>m>>s;
int x,y;
for( i=1; i<=m; i++)
  {f>>x>>y;
  add(x,y);}
begin=end=1;
coada[1]=s;

for(i=1; i<=n; i++)
  viz[i]=-1;
viz[s]=0;  

while(begin<=end)
{
 lista* q = a[coada[begin]];
 while(q)
 {if(viz[q->nod]==-1)
     {viz[q->nod]=viz[coada[begin]]+1;
      end++;
      coada[end]=q->nod;}
  q=q->next;}
 begin++;       }  
for(i=1; i<=n; i++)
  g<<viz[i]<<" ";  
f.close();
g.close();
return 0;}