Cod sursa(job #549643)

Utilizator KosmynC64Munteanu Cosmin KosmynC64 Data 8 martie 2011 20:33:34
Problema BFS - Parcurgere in latime Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 0.96 kb
#include<iostream>
#include<fstream>
#include<vector>
#include<queue>
using namespace std;
struct nod{
    int visited;
    int cost;
    vector<nod*> next;};
void bfs(nod*start){
    nod*current;
    queue<nod*> coada;
    coada.push(start);
    start->cost=0;
    while(!coada.empty()){
        current=coada.front();
        coada.pop();
        current->visited=1;
        for(int i=0;i<current->next.size();i++)
        if(current->next[i]->visited==0){
            coada.push(current->next[i]);
            current->next[i]->cost=current->cost+1;}}}
int main(){
    int n,m,s,d1,d2;
    vector<nod*> graf;
    ifstream f("bfs.in");
    ofstream g("bfs.out");
    f>>n>>m>>s;
    for(int i=0;i<n;i++){graf.push_back(new nod);graf[i]->cost=-1;}
    for(int i=0;i<m;i++){
        f>>d1>>d2;
        graf[d1-1]->next.push_back(graf[d2-1]);}
    bfs(graf[s-1]);
    for(int i=0;i<n;i++)g<<graf[i]->cost<<' ';
    //f.close();g.close();
return 0;}