Cod sursa(job #727535)

Utilizator I.AlexandruIlie Alexandru I.Alexandru Data 28 martie 2012 01:53:32
Problema BFS - Parcurgere in latime Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.9 kb
#include<iostream>
#include<stdio.h>
#define maxn 100001
using namespace std;

struct pnod{
int info;
pnod *next;
};

pnod *lv[maxn];
int n, s, x, y, prim=0, ultim=0, varf, c[maxn], dist[maxn];

void adauga(int x, int y)
{pnod *aux=new pnod;
aux->info=y;
aux->next=lv[x-1];
lv[x-1]=aux;
}

void bf(int x)
{for(int i=0; i<n; i++)
    dist[i]=-1;

dist[x-1]=0;
c[prim]=x;          

for( ; prim<=ultim; prim++)
   {varf=c[prim];
    for(pnod *aux=lv[varf-1]; aux; aux=aux->next)
       if(dist[aux->info-1]==-1)
         {c[++ultim]=aux->info;
          dist[aux->info-1]=dist[varf-1]+1;
         }       
   }     
}

int main()
{freopen("bfs.in", "r", stdin);
freopen("bfs.out", "w", stdout);

cin>>n>>s>>s;
for(; cin>>x>>y; )
   adauga(x, y);    
   
bf(s);
  
for(int i=0; i<n; i++)
   cout<<dist[i]<<" ";   
    
fclose(stdin);  
fclose(stdout);     
return 0;    
}