Cod sursa(job #2198049)

Utilizator dimi999Dimitriu Andrei dimi999 Data 23 aprilie 2018 14:18:25
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.75 kb
#include <bits/stdc++.h>
using namespace std;
ifstream fin("bfs.in");
ofstream fout("bfs.out");
int n,m,l,start;
vector <int> a[100005];
int g[100005],s[100005],cost[100005];

void bfs(int x)
{
    int i,j;
    l=1;
    s[l]=x;
    cost[x]=0;
    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;
    fill(cost+1,cost+n+1,-1);
    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;
}