Cod sursa(job #2298382)

Utilizator Vlad_NituNitu Vlad-Petru Vlad_Nitu Data 8 decembrie 2018 09:30:01
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.1 kb
#include <bits/stdc++.h>
#define NMAX 100005
using namespace std ;
ifstream f ("bfs.in");
ofstream g ("bfs.out");
vector <int> v[NMAX];
queue <int> q;
int n , m , s , x , y , d[NMAX] , viz[100005] , i;
//viz[x] = 0 => Nevizitat
//viz[x] = 1 => Vizitat;
// v este lista
// q este coada in care salvam vecinii\
//BFS - parcurgere in LATIME
void bfs (int s)
{
    int i , j ;
    q.push(s);
    for (i = 1 ; i <= n ; i ++) d[i] = -1;
    d[s] = 0;
    viz[s] = 1;
    while (!q.empty())
    {
            int nod = q.front();
            q.pop() ;
            for (i = 0 ; i < v[nod].size() ; i ++)
            {
                if (!viz[v[nod][i]])
                {
                    q.push(v[nod][i]) ;
                    d[v[nod][i]] = d[nod] + 1;
                    viz[v[nod][i]] = 1 ;
                }
            }
    }
}
int main()
{
    f >> n >> m >> s;
    for (i = 1 ; i <= m ; i ++)
    {
        f >> x >> y ;
        v[x].push_back(y) ;// din x -> y ; Graf ORIENTAT
    }
    bfs(s) ;
    for (i = 1 ; i <= n ; i ++)
        g << d[i] << ' ' ;
    return 0 ;
}