Pagini recente » Cod sursa (job #1384547) | Cod sursa (job #744560) | Cod sursa (job #930546) | Cod sursa (job #1138009) | Cod sursa (job #1142136)
#include <cstdio>
#include <vector>
#include <cstring>
#define pb push_back
using namespace std;
vector <int> g[100010];
bool sel[100010];
vector <int> :: iterator it;
int n,i,m,s,t[100010],lg[100010],q[100010],x,y;
void load()
{
scanf("%d %d %d", &n, &m, &s);
for (i=1;i<=m;++i)
{
scanf("%d %d", &x, &y);
g[x].pb(y);
}
}
void bfs(int pl)
{
sel[pl]=true; int u,p=u=1; q[1]=pl;
t[pl]=lg[pl]=0;
while (p<=n)
{
x=q[p];
for (it=g[x].begin(); it!=g[x].end(); it++)
if (!sel[*it])
{
q[++u]=*it;
sel[*it]=true;
t[*it]=x; lg[*it]=lg[x]+1;
}
p++;
}
}
int main()
{
freopen("bfs.in","r",stdin);
freopen("bfs.out","w",stdout);
load();
memset(lg,-1,sizeof(lg));
bfs(s);
for (i=1;i<=n;++i) printf("%d ", lg[i]);
return 0;
}