Cod sursa(job #1215909)

Utilizator rangerChihai Mihai ranger Data 2 august 2014 17:50:25
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.89 kb
#include<fstream>
#include<vector>
#include<queue>
#include<cstring>
using namespace std;

ifstream cin("bfs.in");
ofstream cout("bfs.out");

const int NMAX=100010;

vector <int> G[NMAX];
queue <int> q;
int D[NMAX],Viz[NMAX],P[NMAX],n,m,x,y,s,i;

int main()
{
    cin>>n>>m>>s;
    for (i=1;i<=m;i++)
    {
        cin>>x>>y;
        G[x].push_back(y);
    }
    memset(D,-1, sizeof D);
    D[s]=0;
    memset(Viz,0, sizeof Viz);
    Viz[s]=1;
    q.push(s);
    P[s]=-1;
    while (!q.empty())
    {
       int v=q.front();
       q.pop();
       for (size_t i=0; i<G[v].size(); i++)
       {
           int to=G[v][i];
           if (!Viz[to])
           {
               Viz[to]=1;
               q.push(to);
               D[to]=D[v]+1;
               P[to]=v;
           }
       }
    }
    for (i=1;i<=n;i++) cout<<D[i]<<" "; cout<<"\n";
    return 0;
}