Cod sursa(job #2582104)

Utilizator razvan1403razvan razvan1403 Data 16 martie 2020 13:34:18
Problema BFS - Parcurgere in latime Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.85 kb
#include <iostream>
#include <fstream>
#define maxx 100010
#include <vector>
using namespace std;

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

int n,m,l,start;
vector <int> a[maxx];
int g[maxx],s[maxx],cost[maxx];

void BFS(int nod){
    int i ,j;
    for(i=1;i<=n;i++)
        cost[i] = -1;

    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';

    fin.close();
    fout.close();
    return 0;
}