Cod sursa(job #2476067)

Utilizator ioanavasi16Vasile Ioana ioanavasi16 Data 17 octombrie 2019 23:39:41
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.93 kb
#include <fstream>
#include <vector>
#include <queue>
#define NMAX 100005
using namespace std;
ifstream fin("bfs.in");
ofstream fout("bfs.out");
int N,M,S,D[NMAX],i,x,y;
queue <int> q;
vector <int> a[NMAX];
void BFS()
{
    int nod_curent,vecin;
    while(!q.empty())
    {
        nod_curent=q.front();
        q.pop();
        for(int i=0; i<a[nod_curent].size(); i++ )
        {
            vecin=a[nod_curent][i];
            if(D[vecin]==-1)
            {
                D[vecin]=D[nod_curent]+1;
                q.push(vecin);
            }
        }

    }

}
int main()
{
    fin>>N>>M>>S;
    for(int i=1; i<=M; i++)
    {
        fin>>x>>y;
        a[x].push_back(y);
    }
    for(int i=1; i<=N; i++)
    {
        D[i]=-1;
        D[S]=0;
    }
    q.push(S);
    BFS();
    for(int i=1; i<=N; i++)
    fout<<D[i]<<" ";
    fout<<"\n";
    fin.close();
    fout.close();
    return 0;
}