Cod sursa(job #2261869)

Utilizator aturcsaTurcsa Alexandru aturcsa Data 16 octombrie 2018 19:27:34
Problema Diametrul unui arbore Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
ifstream fin("bfs.in");
ofstream fout("bfs.out");
vector <int> A[1000001];
int n,m,p;
int R[1000001];
queue <int> Q;
void bfs(int nod,int k)
{
    R[nod]=k;
    int g=A[nod].size();
    for(int i=0;i<g;i++)
    {
        int s=A[nod][i];
        if(R[nod]+1<R[s])
            bfs(s,R[nod]+1);
    }
}
int main()
{
    fin>>m>>n>>p;
    for(int i=1;i<=n;i++)
    {
        int a,b;
        fin>>a>>b;
        A[a].push_back(b);
    }
    for(int i=1;i<=n;i++)
        R[i]=-1;
    Q.push(p);
    R[p]=0;
    while(!Q.empty())
    {
        int nod=Q.front();
        Q.pop();
        int g=A[nod].size();
        for(int i=0;i<g;i++)
        {
            int s=A[nod][i];
            if(R[s]==-1)
            {
                R[s]=R[nod]+1;
                Q.push(s);
            }
        }

    }
    for(int i=1;i<=m;i++)
            fout<<R[i]<<" ";
    return 0;
}