Pagini recente » Monitorul de evaluare | Cod sursa (job #2848819) | Cod sursa (job #3322241) | Cod sursa (job #708523) | Cod sursa (job #3321487)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("bfs.in");
ofstream fout("bfs.out");
int n,m,x,dist[100001];
vector<int>v[100001];
void bfs(int nod)
{
for(int i = 1; i <= n; i++)
dist[i] = -1;
queue<int>q;
q.push(nod);
dist[nod] = 0;
while(!q.empty())
{
int curr = q.front();
q.pop();
for(int i : v[curr])
{
if(dist[i] == -1)
{
dist[i] = dist[curr] + 1;
q.push(i);
}
}
}
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(nullptr);
fin >> n >> m >> x;
for(int i = 1; i <= m; i++)
{
int st,dr;
fin >> st >> dr;
v[st].push_back(dr);
}
bfs(x);
for(int i =1; i <= n; i++)
{
fout << dist[i] << ' ';
}
return 0;
}