Cod sursa(job #2289097)

Utilizator HoratioHoratiu Duma Horatio Data 24 noiembrie 2018 11:08:35
Problema Paduri de multimi disjuncte Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.95 kb
#include <iostream>
#include <vector>
#include <bits/stdc++.h>
#include <queue>
#include <bitset>

using namespace std;

vector<int> G[100005];
int n,m,o;
int v[100005];
queue<int> q;

void citire()
{
    int aux;
    int ind;
    scanf("%d %d %d",&n,&m,&o);
    for(int i=1;i<=m;i++)
    {
        scanf("%d %d",&ind,&aux);
        G[ind].push_back(aux);
    }
}


void parcurgere()
{
    q.push(o);
    v[o]=1;
    while(!q.empty())
    {
        int aux=q.front();
        q.pop();

        for(auto i:G[aux])
        {
            if(!v[i])
            {
                q.push(i);
                v[i]=v[aux]+1;
            }
        }
    }

}

void afisare()
{
    for(int i=1;i<=n;i++)
    {
     printf("%d ",v[i]-1);
    }
}

using namespace std;

int main()
{
    freopen("bfs.in","r",stdin);
    freopen("bfs.out","w",stdout);
    citire();
    parcurgere();
    afisare();
    return 0;
}