Cod sursa(job #2756419)

Utilizator marcumihaiMarcu Mihai marcumihai Data 31 mai 2021 17:00:19
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.86 kb
#include <bits/stdc++.h>

using namespace std;

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

int n,m,k;

vector <int> a[100005];
queue <pair <int , int >> Q;
int vecin[100005];
int vizitat[100005];
int cont=0;
void bfs(int nod)
{
    vecin[nod]=1;

    Q.push({nod , 1});
    while(!Q.empty())
    {
        nod=Q.front().first;
        vizitat[nod]=++cont;
        for(int x=0;x<a[nod].size();++x)
        {
            if(vecin[a[nod][x]]==0)
            {
                vecin[a[nod][x]]=vecin[nod]+1;
                Q.push({a[nod][x] , vecin[nod]+1});

            }
        }
        Q.pop();
    }
}

int main()
{
    f>>n>>m>>k;
    for(int i=1;i<=m;++i)
    {
        int x , y;
        f>>x>>y;
        a[x].push_back(y);


    }
    bfs(k);
    for(int i=1;i<=n;++i)
        g<<vecin[i]-1<<" ";
    return 0;
}