Cod sursa(job #1316251)

Utilizator zarred7Andrei Iulian zarred7 Data 13 ianuarie 2015 17:43:44
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
#include <fstream>
#include <iostream>
#include <vector>
#include <queue>
#define NMAX 100001
using namespace std;


vector <int> G[NMAX];
queue <int> Q;
int n,m,P,Lg[NMAX],T[NMAX],s;
bool U[NMAX];
 ifstream f("bfs.in");
 ofstream g("bfs.out");
void citire()
{ int i,x,y;
  f>>n>>m>>s;
  for(i=1;i<=m;i++)
  { f>>x>>y;
    G[x].push_back(y);
  }
}

void bf(int x)
{ int i,s;
Q.push(x); Lg[x]=0; U[x]=1;
while(!Q.empty())
{
    x=Q.front(); Q.pop();
    for(i=0;i<G[x].size();i++)
     if(!U[G[x][i]])
     {
         Q.push(G[x][i]);
         Lg[G[x][i]]=Lg[x]+1;
         U[G[x][i]]=1;
         T[G[x][i]]=x;
    }

}
}

int main()
{ int i;
    citire();
bf(s);
for(i=1;i<=n;i++)
if(U[i]) if(i==s) g<<0<<" ";
 else g<<Lg[i]<<" ";
  else g<<-1<<" ";
 return 0;
}