Pagini recente » Cod sursa (job #1858659) | Cod sursa (job #1476946) | Cod sursa (job #3130919) | Cod sursa (job #175881) | Cod sursa (job #697928)
Cod sursa(job #697928)
#include <stdio.h>
#include <vector>
#define Nmax 100001
#define pb push_back
using namespace std;
vector <int> v[Nmax];
int n, m, s, i, x, y, viz[Nmax], c[Nmax];
void bfs(int k)
{
int p, u;
viz[k]=0;
p=u=1;
c[p]=k;
while (p<=u)
{
k=c[p++];
for (vector <int>::iterator it = v[k].begin();it!=v[k].end();it++)
if(viz[*it]==-1)
{
viz[*it] = viz[k] + 1;
c[++u] = *it;
}
}
}
void citire()
{
freopen("bfs.in","r",stdin);
freopen("bfs.out","w",stdout);
scanf("%d %d %d", &n, &m, &s);
for (i=1;i<=m;i++)
{
scanf("%d %d",&x, &y);
v[x].pb(y);
}
}
void afisare()
{
for (i=1;i<=n;i++)
printf("%d ", viz[i]);
}
int main()
{
citire();
for (i=1;i<=n;i++)
viz[i]=-1;
bfs(s);
afisare();
return 0;
}