Cod sursa(job #2582112)

Utilizator razvan1403razvan razvan1403 Data 16 martie 2020 13:39:23
Problema BFS - Parcurgere in latime Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.81 kb
#include<bits/stdc++.h>
#include<stdio.h>
#include <vector>
using namespace std;

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

#define maxx 100010
int N,M,L,Start;
vector <int> a[maxx];
int G[maxx],s[maxx],Cost[maxx];

void BFS(int nod){
    int i ,j;
    memset(Cost, -1, sizeof(Cost));
    L=1;
    Cost[nod] =0;
    s[L] = nod;

    for(i=1;i<=L;i++)
        for(j=0;j<=G[s[i]];j++)
            if(Cost[a[s[i]][j]] == -1)
            {
                s[++L] = a[s[i]][j];
                Cost[s[L]] = Cost[s[i]] + 1;
            }
}

int main()
{
    int i,x,y;
    fin>>N>>M>>Start;

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

    for(i=1;i<=N;i++)
        G[i] = a[i].size();
    BFS(Start);
    for(i=1;i<=N;i++)
        fout<<Cost[i]<<" ";
    fout<<'\n';
    return 0;
}