Pagini recente » Cod sursa (job #3303816) | Cod sursa (job #2793887) | Cod sursa (job #2044049) | Cod sursa (job #2793935) | Cod sursa (job #2513430)
#include <fstream>
#include <queue>
using namespace std;
ifstream cin("bfs.in");
ofstream cout("bfs.out");
int n, m, s, dist[100005], viz[100005];
vector <vector <int> > a;
queue <int> c;
void bfs(int x);
int main()
{
cin >> n >> m >> s;
a.resize(n + 2);
for(int i = 1; i <= m; i++)
{
int x, y;
cin >> x >> y;
a[x].push_back(y);
}
dist[s] = 1;
bfs(s);
for(int i = 1; i <= n; i++)
cout << dist[i] - 1 << " ";
return 0;
}
void bfs(int x)
{
c.push(x);
viz[x] = 1;
while(!c.empty())
{
x = c.front();
for(auto vecin : a[x])
if(viz[vecin] == 0)
{
viz[vecin] = 1;
dist[vecin] = dist[x] + 1;
c.push(vecin);
}
c.pop();
}
}