Pagini recente » Cod sursa (job #1226769) | Cod sursa (job #1897055) | Cod sursa (job #1721163) | Cod sursa (job #2729769) | Cod sursa (job #2229920)
#include <bits/stdc++.h>
using namespace std;
int n, m, S, d[100005], i, x, y;
bool viz[100005];
vector <int> v[100005];
queue <int> Q;
void bfs(int x)
{
Q.push(x);
d[x] = 0;
viz[x] = true;
while(!Q.empty())
{
int k = Q.front();
for(int i = 0;i < v[k].size();i++)
if(viz[v[k][i]] == false)
{
d[v[k][i]] = d[k] + 1;
Q.push(v[k][i]);
viz[v[k][i]] = true;
}
Q.pop();
}
}
int main()
{
ifstream f("bfs.in");
ofstream g("bfs.out");
f >> n >> m >> S;
for(i = 1;i <= m;i++)
{
f >> x >> y;
v[x].push_back(y);
}
memset(d, -1, sizeof(d));
bfs(S);
for(i = 1;i <= n;i++)
g << d[i] << " ";
return 0;
}