Cod sursa(job #743708)

Utilizator memaxMaxim Smith memax Data 5 mai 2012 15:49:29
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.26 kb
#include <iostream>
#include <vector>
#include <queue>
#include <fstream>
using namespace std;

int main(){
    ifstream inr ("bfs.in");
    ofstream our ("bfs.out");
    int n,m,a,b,s,t;
    inr >> n;
    inr >> m;
    inr >> s;
    vector < vector<int> > g(n+1);
    for(int i=1; i<=m; i++){
            inr >> a;
            inr >> b;
            g[a].push_back(b);
            } 
    
    int d[n+1], p[n+1], c[n+1];
    queue<int> q;
    for(int i=1; i<=n; i++){
            d[i]=-1;
            c[i]=1;
            p[i]=0;
            }
    q.push(s);
    d[s]=0;
    c[s]=0;  
    p[s]=s; 
    while(!q.empty()){
                      t=q.front();
                      for(int i=0; i<g[t].size(); i++){
                              if(c[g[t][i]]){
                                             q.push(g[t][i]);
                                             p[g[t][i]]=t;
                                             c[g[t][i]]=0;
                                             d[g[t][i]]=d[t]+1;
                                             }
                              }
                      q.pop();
                      }
    
    for(int i=1; i<=n; i++){
            our << d[i] << " ";
           }
    //cin.ignore(2);
    }