Pagini recente » Cod sursa (job #690782) | Cod sursa (job #1683290) | Cod sursa (job #3242507) | Cod sursa (job #1199656) | Cod sursa (job #794159)
Cod sursa(job #794159)
#include<cstdio>
#include<vector>
using namespace std;
#define NMAX 100002
#define pb push_back
vector <int> a[NMAX];
vector<int> c;
int main()
{
freopen("bfs.in","r",stdin);
freopen("bfs.out","w",stdout);
int n,m ,x, y,s,min[NMAX],viz[NMAX];
scanf("%d %d %d",&n,&m,&s);
c.pb(s);
min[s]=1;
for(int i=1;i<=m;++i)
{
scanf("%d %d",&x,&y);
a[x].pb(y);
}
while(c.size()!=0)
{
x=c.front();
viz[x]=1;
while(a[x].size()!=0)
{
y=a[x].front();
if(viz[y]!=1)
{
c.pb(y);
min[y]=min[x]+1;
}
a[x].erase(a[x].begin());
}
c.erase(c.begin());
}
for(int i=1;i<=n;++i)
if(min[i]>0)printf("%d ",min[i]-1);
else printf("-1 ");
return 0;
}