Pagini recente » Cod sursa (job #2926182) | Cod sursa (job #2691505) | Cod sursa (job #2740212) | Cod sursa (job #2949716) | Cod sursa (job #2148177)
#include <cstdio>
#include <vector>
#define N 100002
using namespace std;
int n, m, nod, k, d[N], v[N];
vector<int> A[N];
void bfs(int x)
{
int i,j;
for(int i=1; i<=n; i++)
d[i]=-1;
k=1;
d[nod]=0;
v[k]=nod;
for(i=1; i<=k; i++)
{
for(j=0; j<A[v[i]].size(); j++)
{
if(d[A[v[i]][j]] == -1)
{
v[++k]=A[v[i]][j];
d[v[k]]=d[v[i]]+1;
}
}
}
}
int main()
{
freopen("bfs.in", "r", stdin);
freopen("bfs.out", "w", stdout);
int i,j;
scanf("%d%d%d", &n, &m, &nod);
while(m)
{
scanf("%d%d", &i, &j);
A[i].push_back(j);
m--;
}
bfs(nod);
for(i=1; i<=n; i++)
{
printf("%d ", d[i]);
}
printf("\n");
return 0;
}