Cod sursa(job #934749)

Utilizator paunmatei7FMI Paun Matei paunmatei7 Data 31 martie 2013 12:42:16
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.86 kb
#include<stdio.h>
#include<string.h>
#include<queue>
#include<vector>
using namespace std;
queue <int> q;
vector<int> a[100001];
int viz[100001];
int n , m , k , x , y;
void bfs(int k)
{
    memset(viz , -1 , sizeof(viz));
    viz[k]=0;
    q.push(k);
    while(! q.empty())
    {
        int temp=q.front();
        for(int i=0 ; i<a[temp].size() ; ++i)
            if(viz[a[temp][i]] == -1)
            {
                viz[a[temp][i]]=viz[temp] + 1;
                q.push(a[temp][i]);
            }
        q.pop();
    }
}
int main()
{
    freopen("bfs.in" , "r" , stdin);
    freopen("bfs.out" , "w" , stdout);
    scanf("%d %d %d" , &n , &m , &k);
    for(int i=1 ; i<=m  ; ++i)
    {
        scanf("%d %d" , &x , &y);
        a[x].push_back(y);
    }
    bfs(k);
    for(int i=1 ; i<=n ; ++i)
        printf("%d " , viz[i]);
}