Cod sursa(job #1550182)

Utilizator Daniel3Leu Daniel Mihai Daniel3 Data 13 decembrie 2015 12:54:16
Problema BFS - Parcurgere in latime Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.91 kb
#include <iostream>
#include <stdio.h>
#include <queue>
#include <string.h>
using namespace std;

vector<int> A[100];
queue<int> q;
int cost[100],g[100];
int L;
void BFS(int nod){
    int i,j;
    int L;
    memset(cost,-1,sizeof(cost));
    q.push(nod);
    while(!q.empty()){
        for(i=0;i<g[q.front()];i++){
            q.push(A[q.front()][i]);
            L++;
            cost[A[q.front()][i]]=cost[q.front()]+1;
        }
        q.pop();
    }
}

int main()
{
   freopen("bfs.in", "r", stdin);
    freopen("bfs.out", "w", stdout);

    int i, x, y,N ,M,Start;

    scanf("%d %d %d ", &N, &M, &Start);
    for (i = 1; i <= M; i++)
    {
        scanf("%d %d ", &x, &y);
        A[x].push_back(y);
    }

    for (i = 1; i <= N; i++)
        g[i] = A[i].size();

    BFS(Start);

    for (i = 1; i <= N; i++)
        printf("%d ", cost[i]);
    printf("\n");

    return 0;
}