Pagini recente » Cod sursa (job #2873801) | Cod sursa (job #3272515) | Cod sursa (job #212379) | Cod sursa (job #447892) | Cod sursa (job #288109)
Cod sursa(job #288109)
#include<cstdio>
#include<vector>
#include<queue>
using namespace std;
const long N=100005;
vector<long> a[N];
vector<long>::iterator it;
long 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()
{
int x;
queue<int> coada;
/*
coada[0]=s;
ce=cs=0;
*/
sel[s]=1;
coada.push(s);
while(!coada.empty())
{
x=coada.front();
coada.pop();
for(it=a[x].begin();it!=a[x].end();++it)
if(!sel[*it])
{
d[*it]=d[x]+1;
sel[*it]=1;
coada.push(*it);
}
}
}
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;
}