Cod sursa(job #3238993)

Utilizator MegaCoderMinoiu Teodor Mihai MegaCoder Data 1 august 2024 11:17:59
Problema BFS - Parcurgere in latime Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.95 kb
#include<fstream>
#include<vector>
#include<queue>
std::ifstream fin("bfs.in");
std::ofstream fout("bfs.out");
const int NMAX=100005;
int n, m, a;
std::vector<int>G[NMAX];
std::vector<int>ans(NMAX, -1);
void read()
{
    fin>>n>>m>>a;
    int from, to;
    for(int i=0; i<m; ++i)
    {
        fin>>from>>to;
        G[from].push_back(to);
    }
}
void bfs()
{
    std::queue<int>q;
    for(auto it:G[a])
    {
        if(it==a)
            ans[a]=0;
        else
        {
            ans[it]=1;
            q.push(it);
        }
    }
    while(!q.empty())
    {
        int node=q.front();
        q.pop();
        for(auto it:G[node])
        {
            if(ans[it]<0)
            {
                ans[it]=ans[node]+1;
                q.push(it);
            }
        }
    }
}
void displayAns()
{
    for(int i=1; i<=n; ++i)
        fout<<ans[i]<<' ';
}
int main()
{
    std::ios_base::sync_with_stdio(false);
    read();
    bfs();
    displayAns();
    return 0;
}