Cod sursa(job #682061)

Utilizator EstarDaian Dragos Estar Data 18 februarie 2012 15:17:25
Problema BFS - Parcurgere in latime Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 0.86 kb
#include <stdio.h>
#include <vector>

using namespace std;

struct graf{
    int d;
    vector<int> next;
    graf(){
        d=-1;
    }
};

vector<graf> orientat;
int s;

void bfs(int nod ,int d){
    for(int i=0;i<(signed)orientat[nod].next.size();i++){
        if(d<orientat[orientat[nod].next[i]].d||orientat[orientat[nod].next[i]].d==-1){
        orientat[orientat[nod].next[i]].d=d+1;
        bfs(orientat[nod].next[i], d+1);
        }
    }
}

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