Cod sursa(job #2106705)

Utilizator mateigabriel99Matei Gabriel mateigabriel99 Data 16 ianuarie 2018 08:32:32
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.85 kb
#include <bits/stdc++.h>

#define NMax 100005

using namespace std;

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

int N,M,S;
vector<int> G[NMax];
int dist[NMax];
queue<int> Q;

void Read()
{
    fin>>N>>M>>S;
    for(int i,j,k=1;k<=M;k++)
    {
        fin>>i>>j;
        G[i].push_back(j);
    }
    memset(dist,-1,sizeof(dist));
}

void Write()
{
    for(int i=1;i<=N;i++)
        fout<<dist[i]<<" ";
}

void BFS(int source)
{
    Q.push(source); dist[source]=0;
    while(!Q.empty())
    {
        int k=Q.front();
        Q.pop();
        for(vector<int>::iterator it=G[k].begin(); it!=G[k].end();it++)
            if(dist[*it]==-1)
            {
                dist[*it]=dist[k]+1;
                Q.push(*it);
            }
    }
}

int main()
{
    Read();
    BFS(S);
    Write();

    return 0;
}