Cod sursa(job #682052)

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

using namespace std;

ifstream fi("bfs.in");
ofstream fo("bfs.out");

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

vector<graf> orientat;
int s;

void bfs(int nod ,int d){
    orientat[nod].v=1;
    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(){
    int n , m;
    fi>>n>>m>>s;
    orientat.assign(n,graf());
    for(int i=0;i<m;i++){
        int x , y;
        fi>>x>>y;
        orientat[x-1].next.push_back(y-1);
    }
    bfs(s-1,0);
    for(int i=0;i<n;i++)
    if(i==s-1)fo<<0<<' ';
    else fo<<orientat[i].d<<' ';
}