Pagini recente » Cod sursa (job #2677759) | Cod sursa (job #470171) | Cod sursa (job #1597508) | Cod sursa (job #2598864) | Cod sursa (job #3252816)
#include <fstream>
#include <vector>
#include <queue>
using namespace std ;
ifstream cin ("bfs.in") ;
ofstream cout ("bfs.out") ;
int n, m, s, d[100005] ;
vector < int > v[100005] ;
bool visited[100005] ;
queue < int > q ;
void bfs (int node)
{
d[node] = 0 ;
q.push (node) ;
visited[node] = true ;
while (!q.empty())
{
int x = q.front() ;
q.pop() ;
for (auto item : v[x])
if (!visited[item])
d[item] = d[x] + 1, q.push (item), visited[item] = true ;
}
}
int main()
{
int x, y ;
cin >> n >> m >> s ;
for (int i = 1 ; i <= m ; i ++)
cin >> x >> y, v[x].push_back (y) ;
bfs (s) ;
for (int i = 1 ; i <= n ; i ++)
{
if (i == s || d[i])
cout << d[i] << ' ' ;
else
cout << -1 << ' ' ;
}
return 0 ;
}