Cod sursa(job #2801601)

Utilizator ndg_gdnNan Diana ndg_gdn Data 16 noiembrie 2021 17:14:00
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.97 kb
#include <fstream>
#include <vector>
#include <queue>

using namespace std;

const int nmax=100005;
vector<int> G[nmax];
vector<int> viz;
vector<int> d;

int x;

ifstream fin("bfs.in");
ofstream fout("bfs.out");

void bfs(int nod, int cc)
{
    int v;
    queue<int> q;
    q.push(nod);
    viz[nod]=cc;
    d[nod]=0;
    while(!q.empty())
        {
            nod=q.front();
            q.pop();
            for(int j=0;j<G[nod].size();j++)
            {
                v=G[nod][j];
                if(viz[v]==0)
                {
                    d[v]=d[nod]+1;
                    viz[v]=cc;
                    q.push(v);
                }
            }
        }
}

int main()
{
    int n,m,u,v,cc,i;
    fin>>n>>m>>x;
    for(i=1;i<=m;i++)
    {
        fin>>u>>v;
        G[u].push_back(v);
    }

    viz.assign(n+1,0);
    d.assign(n+1,-1);

    bfs(x,1);

    for(i=1;i<=n;i++)
        fout<<d[i]<<" ";

    return 0;
}