Cod sursa(job #1767576)

Utilizator GeanaVladGeana Vlad GeanaVlad Data 29 septembrie 2016 14:42:49
Problema BFS - Parcurgere in latime Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.88 kb
#include <iostream>
#include<fstream>
#include<vector>
#define Nmax 100001
#define mx 1000000000
typedef int coada[Nmax];
using namespace std;
ifstream f("BFS.in");
ofstream g("BFS.out");
coada c;
int cst[Nmax],n,m,x,y,s,i;
vector<int>v[Nmax];
void BFS(int nod)
{
    int siz=1,start=1;
    c[start]=nod;
    cst[nod]=0;
    while(siz-start>=0)
    {
        for(int j=0;j<v[c[start]].size();j++)
            if(cst[v[c[start]][j]] > cst[c[start]]+1)
        {
            cst[v[c[start]][j]] = cst[c[start]]+1;
            c[++siz]=v[c[start]][j] ;
        }
        start++;
    }
}
int main()
{
    f>>n>>m>>s;
    for(i=1;i<=m;i++)
    {
        f>>x>>y;
        if(x!=y)
            v[x].push_back(y);
    }
    for(i=1;i<=n;i++)
        cst[i]=mx;
    BFS(s);
    for(i=1;i<=n;i++)
        if(cst[i]!=mx) g<<cst[i]<<' ';
        else g<<-1<<' ';
}