Cod sursa(job #868008)

Utilizator Bigb21Avram Bogdan Bigb21 Data 30 ianuarie 2013 15:55:01
Problema BFS - Parcurgere in latime Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 1.01 kb
#include<iostream>
#include<fstream>
#include<vector>
#include<algorithm>
#include<cstring>
#include<cstdio>
#define NMAX 100000
using namespace std;
ifstream in("bfs.in");
ofstream out("bfs.out");
vector <int> v[NMAX];
int n,m,S,viz[NMAX],c[NMAX];
void read()
{
     int x,y,i;
     in>>n>>m>>S;

      for( i=1; i<=m; i++)
        { in>>x>>y;
         v[x].push_back(y);
        }

}

int main ()
{
    int  p,k,j,i;

     read();
    p=k=1;
     c[p]=S;
     viz[S]=0;

     while(p<=k)
      {
           for(j=0;j<v[c[p]].size();++j)
               if(viz[v[c[p]][j]]==0  && v[c[p]][j]!=S )
                {
                  c[++k]=v[c[p]][j];
                  viz[v[c[p]][j]]=viz[c[p]]+1;
                }

                     p++;

      }


          for(i=1;i<=n;i++)
           if(viz[i]==0 && i!=S)
             out<<-1<<" ";
             else
           out<<viz[i]<<" ";

            in.close();
            out.close();

            return 0;
}