Pagini recente » Cod sursa (job #3169300) | Cod sursa (job #1159476) | Cod sursa (job #379996) | Cod sursa (job #1249692) | Cod sursa (job #2683411)
#include <bits/stdc++.h>
#include <fstream>
#define pb push_back
using namespace std;
int const N_max = 1e5;
const int INF = 1e9;
int n , m , s;
ifstream in ("bfs.in");
ofstream out ("bfs.out");
int dist[1 + N_max]; /// dist[nod] = distanta minima de la sursa la nod
vector <int> a[N_max + 1];
void bfs( int sursa)
{
for (int i = 1; i <= n; i++)
dist[i] = INF;
queue <int> coada;
coada.push (sursa);
dist[sursa] = 0;
while (coada.size ()) {
int nod = coada.front ();
coada.pop ();
for (int vec : a[nod])
if (dist[vec] == INF ) {
dist[vec] = dist[nod] + 1;
coada.push (vec);
}
}
}
int main()
{
in >> n >> m >> s;
for ( int i = 1; i <= m ; i++ )
{
int x , y;
in >> x >> y;
a[x].pb(y);
}
bfs(s);
for ( int i = 1; i <= n ; i++ )
{
if( dist[i] == INF)
dist[i] = -1;
out << dist[i] << " ";
}
return 0;
}