Cod sursa(job #1981903)

Utilizator VAIonescuIonescu Vlad-Andrei VAIonescu Data 17 mai 2017 10:00:12
Problema BFS - Parcurgere in latime Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.94 kb
#include <cstdio>
#include <queue>
#include <vector>
using namespace std;
const int nmax=100001;
vector<int> G[nmax];
queue<int> q;
vector<int> viz;
vector<int> d;
vector<int> t;
void bfs(int u){
    viz[u]=1;
    d[u]=0;
    q.push(u);
    int v;
    while (!q.empty()){
        u=q.front();
        for (int j=0;j<(int)G[u].size();j++){
            v=G[u][j];
            if (!viz[v]){
                viz[v]=1;
                t[v]=u;
                d[v]=d[u]+1;
                q.push(v);
            }     
        }
        q.pop();
    }
}
int main()
{
    freopen("bfs.in","r",stdin);
    freopen("bfs.out","w",stdout);
    int n,m,s;
    scanf("%d%d%d",&n,&m,&s);
    viz.assign(n,0);
    d.assign(n,-1);
    t.assign(n,0);
    for (int i=1,x,y;i<=m;i++){
        scanf("%d%d",&x,&y);
        G[x].push_back(y);
    }
    bfs(s);
    for (int i=1;i<=n;i++){
        printf("%d ",d[i]);
    }
    return 0;
}