Cod sursa(job #2357208)

Utilizator Cristian.BBurghelea Cristian Cristian.B Data 27 februarie 2019 10:46:26
Problema BFS - Parcurgere in latime Scor 50
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.94 kb
#include <bits/stdc++.h>

using namespace std;

ifstream f ("bfs.in");
ofstream g ("bfs.out");

vector<int>v[100005];
int n,m,s,x,y,c[100005],r[100005];
bool viz[100005];

bool vecin(int x, int y)
{
    for(auto k:v[x])
        if(k==y)return true;
    return false;
}

void BFS(int x)
{
    viz[x]=true;
    c[1]=x;
    int p=1,u=1;
    while(p<=u){
        for(int i=1;i<=n;++i)
            if(vecin(x,i) && !viz[i]){
                c[++u]=i;
                viz[i]=true;
                r[i]=r[x]+1;
                //g<<"Am ajuns in legatura:"<<x<<' '<<i<<'\n';
            }
        x=c[++p];
    }
}

int main()
{
    f>>n>>m>>s;
    for(int i=0;i<m;++i){
        f>>x>>y;
        v[x].push_back(y);
        //v[y].push_back(x);
    }
    BFS(s);
    for(int i=1;i<=n;++i)
        if(r[i])g<<r[i]<<' ';
        else if(i==s)g<<0<<' ';
             else g<<-1<<' ';

    f.close(); g.close();
    return 0;
}