Cod sursa(job #2111557)

Utilizator marcogoldPop Mihali Marco Silviu marcogold Data 22 ianuarie 2018 12:11:12
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.01 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
using namespace std;

ofstream fo("bfs.out");
ifstream fi("bfs.in");

vector <int> vecini[1000010];
queue <int> q;
bool vazut[100010];
int n,m,s,dist [100010],a,b;



int main()
{
    fi>>n>>m>>s;

    q.push(s);
    vazut[s]=1;

    for(int i=1; i<=m; i++)
    {
        fi>>a>>b;
        vecini[a].push_back(b);
    }





    while(!q.empty())
    {
        int curent=q.front();
        q.pop();



        for(auto i:vecini[curent] )
        {
            int next=i;
            if(!vazut[next])
            {
                vazut[i]=true;
                q.push(next);
                dist[next]=dist[curent]+1;

            }
        }

    }


    for(int i=1; i<=n; i++)
    {
        if(i==s)
            fo<<"0"<<" ";
        else
        {
            if(dist[i])
                fo<<dist[i]<<" ";
            else
                fo<<"-1"<<" ";

        }
    }

    return 0;
}