Cod sursa(job #1197326)

Utilizator DjokValeriu Motroi Djok Data 11 iunie 2014 18:11:32
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.98 kb
#include<fstream>
#include<algorithm>
#include<cstring>
using namespace std;

typedef struct lnod {
      int info;
      lnod *next;  
}*nod;

int i,m,n,s,x,y,head,tail,rs[100005],q[2000010];
bool viz[100005];
nod lda[100005],p;

void add(int x, nod &y)
{
  nod p=new lnod;   
  p->info=x;
  p->next=y;
  y=p;
}

int main()
{
   ifstream cin("bfs.in");
   ofstream cout("bfs.out");  
   
   cin>>n>>m>>s;
   
   while(m--)
   {
     cin>>x>>y;       
     add(y,lda[x]);
   }
   
  memset(rs,-1,sizeof(rs)); 
  head=1; tail=1; q[1]=s; rs[s]=0; viz[s]=1;
  while(head<=tail)
  {
    for(p=lda[q[head]];p;p=p->next)
    if(viz[p->info]==0) { 
                          ++tail;
                          q[tail]=p->info;
                          rs[q[tail]]=rs[q[head]]+1;
                          viz[p->info]=1;
                        }           
    ++head;                    
  } 
   
  for(i=1;i<=n;i++) cout<<rs[i]<<' '; 
    
 return 0;   
}