Cod sursa(job #2005581)

Utilizator valorosu_300Cristian Gherman valorosu_300 Data 27 iulie 2017 15:45:07
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.85 kb
#include <fstream>
using namespace std;
ifstream in("bfs.in");
ofstream out("bfs.out");
const int N = 100005;
struct nod{
    int nr;
    nod *urm;
}*v[N];
int d[N],c[N];
void adaug(int x,int y){
    nod *nou = new nod;
    nou->nr = y;
    nou->urm = v[x];
    v[x] = nou;
}
void bfs(int ns){
    int st = 1, dr = 1, val;
    d[ns] = 1;
    c[st] = ns;
    while(st <= dr){
        for(nod *p = v[c[st]];p;p = p->urm){
            val = p->nr;
            if(d[val] == 0){
                c[++dr] = val;
                d[val] = d[c[st]] + 1;
            }
        }
        st++;
    }
}
int main()
{
    int n,m,ns,x,y;
    in>>n>>m>>ns;
    for(int i=1;i<=m;i++){
        in>>x>>y;
        adaug(x,y);
    }
    in.close();
    bfs(ns);
    for(int i=1;i<=n;i++)
        out<<d[i] - 1<<" ";
    out.close();
    return 0;
}