Cod sursa(job #2661261)

Utilizator StefansenNegulescu Stefan Stefansen Data 21 octombrie 2020 17:32:52
Problema BFS - Parcurgere in latime Scor 70
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.88 kb
#include <bits/stdc++.h>
#include<vector>
#include<fstream>
using namespace std;

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

int N, M, S, poz;
vector<int> graf[100000];
int nrv[100000], cost[100000], q[100000];


void BFS(int nod)
{
    int i, j;

    for(i=1;i<=N;i++)
        cost[i] = -1;

    poz = 1;
    cost[nod] = 0;
    q[poz] = nod;

    for(i=1;i<=poz;i++)
        for(j=0;j<nrv[q[i]];j++)
            if(cost[graf[q[i]][j]] == -1)   // nevizitat
            {
                q[++poz] = graf[q[i]][j];
                cost[q[poz]] = cost[q[i]] + 1;
            }
}



int main()
{
    int i,x,y;
    f>>N>>M>>S;

    for(i=1;i<=M;i++)
    {
        f>>x>>y;
        graf[x].push_back(y);
    }

    for(i=1;i<=N;i++)
        nrv[i] = graf[i].size();

    BFS(S);

    for(i=1;i<=N;i++)
        g<<cost[i]<<" ";


    return 0;


}