Cod sursa(job #3254602)

Utilizator aeru1Ianos Alex-Marian aeru1 Data 8 noiembrie 2024 08:49:24
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.91 kb
#include <bits/stdc++.h>

using namespace std;

#define TITLE "bfs"
#define ll long long

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

vector<int> Graph[100001];
int Visited[100001];

void bfs(int StartNode)
{
    Visited[StartNode]=1;
    queue<int> Q;
    Q.emplace(StartNode);
    for(;!Q.empty(); Q.pop())
    {
        int CurrentNode=Q.front();
        for(auto it : Graph[CurrentNode])
            if(Visited[it]==0)
            {
                Q.emplace(it);
                Visited[it]=Visited[CurrentNode]+1;
            }
    }
}

int main()
{
    int n,m,StartNode;
    f>>n>>m>>StartNode;
    while(m--)
    {
        int a,b;
        f>>a>>b;
        Graph[a].emplace_back(b);
    }
    bfs(StartNode);
    for(int i=1; i<=n; i++, g<<' ')
    {
        if(Visited[i]==0)
            g<<-1;
        else
            g<<Visited[i]-1;
    }
    return 0;
}