Cod sursa(job #885923)

Utilizator zvonTutuldunsa Voronokda zvon Data 22 februarie 2013 15:17:13
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.85 kb
#include<iostream>
#include<queue>
#include<vector>
#include<iomanip>
#include<string>
#include<fstream>
using namespace std;
int main() {
ifstream vind("bfs.in");
int m,n,s,x,v;
vind>>n>>m>>s; 
vector < vector<int> > a(n+1);
for(int i=1; i<=m; i++) {
  vind>>x>>v;
  a[x].push_back(v);    
      }
vind.close(); 
int r[n+1]; bool b[n+1]; queue<int> q;
for (int i=1; i<=n; i++) { r[i]=-1; b[i]=false;} 
q.push(s);  r[s]=0; 
while (!q.empty()) {
         v=q.front(); q.pop();    
         while (!a[v].empty()) {
                         x=a[v].back(); 
                         if (!b[x] && r[x]==-1) {q.push(x); r[x]=r[v]+1;}    
                         a[v].pop_back(); 
                                }   b[v]=true; 
      }
ofstream duc("bfs.out");
for(int i=1; i<=n; i++) { duc<<r[i]<<" ";}
duc.close();
 
return(0);    
    }