Cod sursa(job #2230613)

Utilizator DandeacDan Deac Dandeac Data 10 august 2018 19:10:41
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
#include <algorithm>
#include <cstring>

using namespace std;

ifstream f ("bfs.in");
ofstream g ("bfs.out");

#define Gmax 100010
#define INF 0x3f3f3f3f

vector <int> G[Gmax];
queue < pair<int,int> > q;
int dist[Gmax];


int main()
{
    int N,M,s;
    f>>N>>M>>s;
    for(int i=1;i<=M;i++)
    {
        int x,y;
        f>>x>>y;
        G[x].push_back(y);
    }

    memset( dist, 0x3f, sizeof(dist));
    q.push(make_pair(s,0));

    while(!q.empty())
    {
        int nod = q.front().first;
        int d = q.front().second;
        q.pop();

        if(dist[nod] != INF)
            continue;
        dist[nod] = d;

        for(int i=0;i<G[nod].size();i++)
        {
            q.push(make_pair(G[nod][i],d + 1));
        }
    }

    for(int i=1;i<=N;i++)
    {
        if(dist[i] == INF)
            g<<-1<<' ';
        else
        g<<dist[i]<<' ';
    }


    return 0;
}