Cod sursa(job #2539255)

Utilizator razvan123vRazvan Vranceanu razvan123v Data 5 februarie 2020 19:28:55
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.08 kb
//
//  main.cpp
//  BFS
//
//  Created by Razvan Vranceanu on 05/02/2020.
//  Copyright © 2020 Razvan Vranceanu. All rights reserved.
//

#include <fstream>
#define N 100001
using namespace std;
ifstream f("bfs.in");
ofstream g("bfs.out");
int n, m, viz[N], q[N], pas, start;
struct nod{
    int x;
    nod *leg;
} *L[N];
void adauga(nod *&pp, int val)
{
    nod *p=new nod;
    p->x=val;
    p->leg=pp;
    pp=p;
}
void citire(int &n, int &m, int &start)
{
    f>>n>>m>>start;
    int x, y;
    for(int i=1;i<=m;i++)
    {
        f>>x>>y;
        adauga(L[x], y); // digraf
    }
    f.close();
}
void BFS(int ns)
{
    int prim, ultim;
    nod *p;
    prim=ultim=1;
    q[ultim]=ns;
    viz[ns]=0;
    while(prim<=ultim)
    {
        int x=q[prim];
        for(p=L[x];p;p=p->leg)
            if(viz[p->x]==-1)
            {
                viz[p->x]=viz[x]+1;
                q[++ultim]=p->x;
            }
        prim++;
    }
}
int main()
{
    citire(n, m, start);
    for(int i=1;i<=n;i++)
        viz[i]=-1;
    BFS(start);
    for(int i=1;i<=n;i++)
        g<<viz[i]<<" ";
    return 0;
}