Cod sursa(job #2298621)

Utilizator andrei32576Andrei Florea andrei32576 Data 8 decembrie 2018 11:56:00
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.92 kb
#include <bits/stdc++.h>
using namespace std;

int viz[100002],i,n,m,x,y,ns,dist[100002];
queue < pair<int,int> > q;
vector <int> G[100002];

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

void bfs(int S)
{
    dist[S]=0;
    viz[S]=1;
    while(!q.empty())
    {
        int nod = q.front().first;
        int d=q.front().second;

        for(auto& it : G[nod])
        {
            int nodc=it;

            if(viz[nodc]==0)
            {
                viz[nodc]=1;
                q.push(make_pair(nodc,d+1));
                dist[nodc]=d+1;
            }
        }

        q.pop();
    }
}

int main()
{
    f>>n>>m>>ns;
    for(i=1;i<=m;i++)
    {
        f>>x>>y;
        G[x].push_back(y);
    }

    q.push(make_pair(ns,0));

    for(i=1;i<=n;i++)
        dist[i]=-1;

    bfs(ns);

    for(i=1;i<=n;i++)
        g<<dist[i]<<" ";

    f.close();
    g.close();
    return 0;
}