Pagini recente » Cod sursa (job #1741609) | Cod sursa (job #657451) | Cod sursa (job #2901703) | Cod sursa (job #3228331) | Cod sursa (job #288096)
Cod sursa(job #288096)
#include<cstdio>
#include<vector>
using namespace std;
const long N=100005;
vector<long> a[N];
vector<long>::iterator it;
int d[N];
long n,m,s;
long x,y;
long coada[N],cs,ce;
long sel[N];
void citire()
{
scanf("%ld %ld %ld",&n,&m,&s);
for(;m--;)
{
scanf("%ld %ld",&x,&y);
a[x].push_back(y);
}
}
void bfs()
{
coada[0]=s; ce=cs=0;
sel[s]=1;
while(cs<=ce)
{
for(it=a[coada[cs]].begin();it!=a[coada[cs]].end();++it)
if(!sel[*it])
{
d[*it]=d[coada[cs]]+1;
coada[++ce]=*it;
sel[*it]=1;
}
cs++;
}
}
void afisare()
{
for(long i=1;i<=n;i++)
if(d[i]||i==s)printf("%ld ",d[i]);
else printf("-1 ");
}
int main()
{
freopen("bfs.in","r",stdin);
freopen("bfs.out","w",stdout);
citire();
bfs();
afisare();
return 0;
}