Pagini recente » Cod sursa (job #812151) | Cod sursa (job #1702816) | Cod sursa (job #2135967) | Cod sursa (job #1663006) | Cod sursa (job #1784150)
#include <cstdio>
#include <vector>
using namespace std;
struct Nod
{
vector<int> v;
int d;
} v[100000];
int st[100000];
int main()
{
int i, n, m, s, a, b, lst = 1, r = 0;
freopen("bfs.in", "r", stdin);
freopen("bfs.out", "w", stdout);
scanf("%d%d%d", &n, &m, &s);
s--;
for(i = 0; i < n; i++)
v[i].d = -1;
for(i = 0; i < m; i++)
{
scanf("%d%d", &a, &b);
v[a - 1].v.push_back(b - 1);
}
st[0] = s;
v[s].d = 0;
while(r < lst)
{
const Nod& c = v[st[r]];
for(i = 0; i < c.v.size(); i++)
{
if(v[c.v[i]].d == -1)
{
st[lst] = c.v[i];
v[c.v[i]].d = c.d + 1;
lst++;
}
}
r++;
}
for(i = 0; i < n; i++)
printf("%d ", v[i].d);
return 0;
}