Cod sursa(job #2091351)

Utilizator infomaxInfomax infomax Data 19 decembrie 2017 16:59:30
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.88 kb
#include <fstream>
#include <vector>
#include <queue>
#include <bitset>

using namespace std;

ifstream F("bfs.in");
ofstream G("bfs.out");

int n, m, S, x, y, d[100005];
vector<int> a[100005];
queue<int> q;
bitset<100005> v;

void bfs()
{
    q.push(S);
    v[ S ] = 1;
    for(int i = 1; i <= n; ++ i) d[i] = -1;
    d[S] = 0;
    vector<int> :: iterator it;
    while(!q.empty())
    {
        x = q.front();
        q.pop();
        for( it = a[x].begin(); it != a[x].end(); ++ it )
            if(!v[*it])
            {
                v[*it] = 1;
                d[*it] = d[x] + 1;
                q.push(*it);
            }
    }
}

int main()
{
    F >> n >> m >> S;
    for( int i = 1; i <= m; ++ i )
    {
        F >> x >> y;
        a[x].push_back(y);
    }
    bfs();
    for(int i = 1; i <= n; ++ i)
        G << d[i] << " ";
    return 0;
}