Cod sursa(job #2565486)

Utilizator serafimalex2001Serafim Alex serafimalex2001 Data 2 martie 2020 14:24:42
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.88 kb
#include <iostream>
#include <fstream>
#include <queue>
using namespace std;

ifstream fin("bfs.in");
ofstream fout("bfs.out");

int n,m,S;

int dist[100008];

vector<int>Ad[100009];

void Read()
{
    int i,x,y;
    fin>>n>>m>>S;
    for(i=1; i<=m; ++i)
    {
        fin>>x>>y;
        Ad[x].push_back(y);
    }
}

void Do()
{
    int i,j;
    queue<int>Q;
    Q.push(S);
    for(i=1; i<=n; i++)
        dist[i] = -1;
    dist[S] = 0;
    while(!Q.empty())
    {
        int nod = Q.front();
        Q.pop();
        for(i = 0; i<Ad[nod].size(); ++i)
        {
            int w = Ad[nod][i];
            if(dist[w] == -1)
            {
                dist[w] = dist[nod]+1;
                Q.push(w);
            }
        }
    }
    for(i=1; i<=n; ++i)
        fout<<dist[i]<<" ";

}

int main()
{
    Read();
    Do();
    return 0;
}