Pagini recente » Cod sursa (job #1900670) | Cod sursa (job #3204278) | Cod sursa (job #1275749) | Cod sursa (job #1227095) | Cod sursa (job #2476397)
#include <iostream>
#include <vector>
using namespace std;
int n,m,s,v1[100001],c[100001];
vector <int > v[100001];
bool ap[100001];
void BFS()
{
int p=1,u=1;
c[1]=s;
ap[s]=1;
while (p<=u)
{
for (vector <int>::iterator it=v[c[p]].begin();it!=v[c[p]].end();++it)
{
if (ap[*it]==0)
{
ap[*it]=1;
u++;
c[u]=*it;
v1[*it]=v1[c[p]]+1;
}
}
p++;
}
}
int main()
{
int i,a,b;
cin>>n>>m>>s;
for (i=1;i<=m;i++)
{
cin>>a>>b;
v[a].push_back(b);
}
BFS();
for (i=1;i<=n;i++)
{
if (v1[i]!=0)
cout<<v1[i]<<" ";
else
{
if (i==s)
cout<<0<<" ";
else
cout<<-1<<" ";
}
}
return 0;
}