Cod sursa(job #1882926)

Utilizator passwordCiaciru Ana Maria password Data 17 februarie 2017 16:42:36
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.72 kb
#include <bits/stdc++.h>
#define nmax 100005
using namespace std;
ifstream f("bfs.in");
ofstream g("bfs.out");
int n,m,s;
vector <int> V[nmax];
bool viz[nmax];
int nr[nmax];

void bfs()
{int i,v;
 queue <int> C;
 C.push(s); viz[s]=1;
 while(!C.empty())
 {v=C.front(); C.pop();
  for(i=0;i<V[v].size();i++)
    if(viz[V[v][i]]==0)
      {C.push(V[v][i]); viz[V[v][i]]=1;
       nr[V[v][i]]=nr[v]+1;
      }

 }
}


void read()
{int i,x,y;
 f>>n>>m>>s;
 for(i=1;i<=m;i++)
   {f>>x>>y;
    V[x].push_back(y);
   }
}

void af()
{int i;
for(i=1;i<=n;i++)
    if(i==s) g<<0<<" ";
    else
       if(nr[i]>0) g<<nr[i]<<" ";
       else g<<-1<<" ";
}

int main()
{read();
 bfs();
 af();
 return 0;
}