Cod sursa(job #1545596)

Utilizator VladTiberiuMihailescu Vlad Tiberiu VladTiberiu Data 6 decembrie 2015 21:12:49
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.87 kb
#include <cstdio>
#include <vector>
#include <queue>
#include <algorithm>
using namespace std;

vector<int> vecini[100005];
queue<int> q;
int vizitat[100005];
int n,m,x,y,s;

int main()
{
    freopen("bfs.in","r",stdin);
    freopen("bfs.out","w",stdout);
    scanf("%d %d %d",&n,&m,&s);
    for(int i = 1; i <= m; i++){
        scanf("%d %d",&x,&y);
        vecini[x].push_back(y);
    }

    /**BFS*/
    q.push(s);
    vizitat[s] = 1;

    while(!q.empty()){

        int curent = q.front();

        for(int i = 0; i < vecini[curent].size(); i++){

            if(vizitat[vecini[curent][i]] == 0){
                vizitat[vecini[curent][i]] = vizitat[curent] + 1;
                q.push(vecini[curent][i]);
            }
        }
        q.pop();
    }
    for(int i = 1; i <= n; i++){
        printf("%d ",vizitat[i] - 1);
    }
    return 0;
}