Cod sursa(job #2690342)

Utilizator tryharderulbrebenel mihnea stefan tryharderul Data 23 decembrie 2020 17:07:34
Problema BFS - Parcurgere in latime Scor 70
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.85 kb
#include <bits/stdc++.h>
#define pb push_back
#define NMAX 100000

using namespace std;




void bfs(int &varf,int &n,vector<vector<int> >&v ){
    queue<int>q;
    vector<int>drum(NMAX,-1);

    drum[varf]=0;
    q.push(varf);

   while(!q.empty()){
        int nod=q.front();
        q.pop();
        for(auto i:v[nod]){
            if(drum[i]==-1){
                q.push(i);
                drum[q.back()]=drum[nod]+1;

            }

        }

    }

    for(int i=1;i<=n;i++)
        printf("%d ",drum[i]);

}

int main()
{
    freopen("bfs.in","r",stdin);
    freopen("bfs.out","w",stdout);

    int n,m,a;
    scanf("%d%d%d",&n,&m,&a);

    vector<vector<int> >v(NMAX);
    for(int i=1;i<=m;i++){
        int x,y;
        scanf("%d %d",&x,&y);
        v[x].pb(y);
    }

    bfs(a,n,v);

    return 0;
}