Pagini recente » Cod sursa (job #2043209) | Cod sursa (job #2352749) | Cod sursa (job #39004) | Cod sursa (job #2709289) | Cod sursa (job #2928634)
#include<bits/stdc++.h>
using namespace std;
const int Max = 1e5;
ifstream f("bfs.in");
ofstream g("bfs.out");
#define cin f
#define cout g
int n, m, s;
pair<int, int> visited[Max];
vector<int> adj[Max];
void BFS(int k)
{
queue<int> Q;
Q.push(k);
visited[k].first = 1;
visited[k].second = 0;
while(! Q.empty())
{
int temp = Q.front();
Q.pop();
for(auto it : adj[temp])
if(visited[it].first == 0)
{
Q.push(it);
visited[it].first = 1;
visited[it].second = visited[temp].second + 1;
}
}
for(int i = 1; i <= n; i ++)
if(visited[i].first == 0)
cout<<"-1 ";
else
cout<<visited[i].second<<' ';
}
int main()
{
cin >> n >> m >> s;
for(int i = 1; i <= m; i ++)
{
int x, y;
cin >> x >> y;
adj[x].push_back(y);
}
for(int i = 1; i <= n; i ++)
sort(adj[i].begin(), adj[i].end());
BFS(s);
return 0;
}