Cod sursa(job #356755)

Utilizator xtremespeedzeal xtreme Data 16 octombrie 2009 10:31:03
Problema BFS - Parcurgere in latime Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 0.95 kb
#include <stdio.h>
#include <vector>
#define Nmax 100005
#define Mmax 1000005

using namespace std;

int N,M,S,nrarc[Nmax],C[Nmax];
vector<int> G[Nmax];

void citire()
     {freopen("bfs.in","r",stdin);
      int i,a,b;
      scanf("%d %d %d",&N,&M,&S);
      for(i=1;i<=M;i++)
            {scanf("%d %d",&a,&b);
             G[a].push_back(b);
             }
      memset(nrarc,-1, sizeof(nrarc));
      nrarc[S]=0;
      fclose(stdin);
      }
void bfs(int nod)
      {vector<int>::iterator it;
       for(it=G[nod].begin();it!=G[nod].end();it++)
                     if(nrarc[*it]==-1)
                             {nrarc[*it]=nrarc[nod]+1;
                              bfs(*it);}
       }       
void scrie()
     {freopen("bfs.out","w",stdout);
      for(int i=1;i<=N;i++)         printf("%d ",nrarc[i]);
      printf("\n");fclose(stdout);
      }
int main()
    {citire();
     bfs(S);
     scrie();
     return 0;
     }