Cod sursa(job #2277390)

Utilizator DandeacDan Deac Dandeac Data 6 noiembrie 2018 09:33:06
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1 kb
#include <iostream>
#include <vector>
#include <queue>
#include <fstream>
#include <cstring>
#include <algorithm>

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]<<' ';
    }
    cout<<endl;
    return 0;
}