Cod sursa(job #1605653)

Utilizator mihaimusatMihai Musat mihaimusat Data 19 februarie 2016 12:27:30
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
#include <fstream>
#include <vector>

#define NMAX 100001

using namespace std;

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

int n,m,i,x,X,y,q[NMAX],t[NMAX],lg[NMAX];
vector<int> v[NMAX];
bool sel[NMAX];

void BF(int x)
{
    vector<int>::iterator it;
    int p,u,i,nod;
    q[1]=x;
    sel[x]=true;
    t[x]=0;
    lg[x]=1;
    p=u=1;
    while(p<=u)
    {
        nod=q[p];
        for(it=v[nod].begin();it!=v[nod].end();it++)
        if(!sel[*it]){
        q[++u]=*it;
        sel[*it]=true;
        lg[*it]=lg[nod]+1;
        t[*it]=nod;
        }
        p++;
    }


}

int main()
{
    cin>>n>>m>>X;
    for(i=1;i<=m;i++)
    {
        cin>>x>>y;
        v[x].push_back(y);
    }
    BF(X);
    for(i=1;i<=n;i++)
    cout<<lg[i]-1<<" ";
    return 0;
}