Cod sursa(job #2351319)

Utilizator EmplopiStefan Nitu Emplopi Data 22 februarie 2019 10:41:03
Problema BFS - Parcurgere in latime Scor 20
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.96 kb
#include <bits/stdc++.h>

int dist[100001], trecut[100001];
std::vector <int> v[100001];

struct coad{
    int nod, dist;
} coada[1000001];

int main(){
    FILE *fin, *fout;
    int n, m, s, i, a, b, x, dx, str, nd;
    fin=fopen("bfs.in", "r");
    fout=fopen("bfs.out", "w");
    fscanf(fin, "%d%d%d", &n, &m, &s);
    for(i=0;i<m;i++){
        fscanf(fin, "%d%d", &a, &b);
        v[a].push_back(b);
    }
    for(i=1;i<=n;i++)
        dist[i]=-1;
    coada[0].nod=s;
    coada[0].dist=0;
    trecut[s]=1;
    str=0;
    nd=1;
    while(str<nd){
        x=coada[str].nod;
        dx=coada[str].dist;
        trecut[x]=1;
        dist[x]=dx;
        for(i=0;i<v[x].size();i++)
            if(trecut[v[x][i]]==0){
                coada[nd].nod=v[x][i];
                coada[nd++].dist=dx+1;
            }
        str++;
    }
    for(i=1;i<=n;i++)
        fprintf(fout, "%d ", dist[i]);
    fclose(fin);
    fclose(fout);

    return 0;
}