Pagini recente » Cod sursa (job #1667865) | Cod sursa (job #1635598) | Cod sursa (job #2347560) | Cod sursa (job #190532) | Cod sursa (job #851573)
Cod sursa(job #851573)
#include<cstdio>
#include<vector>
using namespace std;
#define nmax 100001
using namespace std;
int viz[nmax],q[nmax];
vector <int> v[nmax];
int n,m,s;
void read()
{
int i,x,y;
for (i=1;i<=m;++i)
{
scanf("%d %d",&x,&y);
v[x].push_back(y);
}
}
void bfs()
{
int p=1,u=1; int i;
q[p]=s;
while(p<=u)
{
for (i=0;i<v[q[p]].size();++i)
if ((viz[v[q[p]][i]]==0)&&(v[q[p]][i]!=s))
{
u++;
viz[v[q[p]][i]]=viz[q[p]]+1;
q[u]=v[q[p]][i];
}
p++;
}
for (i=1;i<=n;++i)
if ((viz[i])&&(i!=s))
printf("%d ",viz[i]);
else
if (i==s)
printf("0 ");
else
printf("-1 ");
}
int main()
{
freopen("bfs.in","r",stdin);
freopen("bfs.out","w",stdout);
scanf("%d%d%d",&n,&m,&s);
read();
bfs();
}