Cod sursa(job #1927853)

Utilizator GandalfTheWhiteGandalf the White GandalfTheWhite Data 15 martie 2017 16:56:55
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.86 kb
#include <cstdio>
#include <queue>
#include <vector>
#define N 100001
using namespace std;

vector <int> G[N];
int n,start,dist[N];

void Read(){

    int m,x,y;
    freopen("bfs.in","r",stdin);

    scanf("%d%d%d",&n,&m,&start);
    while (m--){
        scanf("%d%d",&x,&y);
        G[x].push_back(y);
        }
}

void Bfs(){

    queue <int> Q;
    int node,i;

    Q.push(start);dist[start]=1;
    while (!Q.empty()){
        node=Q.front();Q.pop();
        for (i=0;i<G[node].size();++i)
            if (!dist[G[node][i]]) {
                Q.push(G[node][i]);
                dist[G[node][i]]=dist[node]+1;
                }
        }
}

void Write(){

    int i;
    freopen("bfs.out","w",stdout);

    for (i=1;i<=n;++i)
        printf("%d ",dist[i]-1);
}
int main()
{
    Read();
    Bfs();
    Write();
    return 0;
}