Cod sursa(job #1564102)

Utilizator GrandmasterSoucup Bogdan Grandmaster Data 8 ianuarie 2016 13:35:19
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.2 kb
#include <fstream>
#include <cmath>
#include <vector>
#include <set>
#include <algorithm>
#include <cstring>
#include <map>
#include <iomanip>
#include <time.h>
#include <stdio.h>
#include <bitset>
#define MAX 500000000000
//#include <iostream>
using namespace std;
ifstream cin("bfs.in");
ofstream cout("bfs.out");
int x[100004], vecini[100004];
void BFS(vector<int> vec[], int n, int m, int nodst, int x[], int vecini[])
{
    int coada = 0, cap = 1;
    vecini[coada] = nodst - 1;
    x[nodst - 1] = 0;
    while(cap != coada){
        for(int i = 0; i < vec[vecini[coada]].size(); i++){
                if(x[vec[vecini[coada]][i]] == -1){
                    vecini[cap++] = vec[vecini[coada]][i];
                    x[vec[vecini[coada]][i]] = x[vecini[coada]] + 1;
                }
        }
        coada++;
    }
}
int main()
{
    int n, nodst, m, a, b;
    vector<int> vec[100004];
    cin >> n >> m >> nodst;
    for(int i = 0; i < n; i++)
        x[i] = -1;
    for(int i = 0; i < m; i++){
        cin >> a >> b;
        vec[a - 1].push_back(b - 1);
    }
    BFS(vec, n, m, nodst, x, vecini);
    for(int i = 0; i < n; i++)
        cout << x[i] << " ";
    return 0;
}