Pagini recente » Cod sursa (job #2299162) | Cod sursa (job #1952007) | Cod sursa (job #1257388) | Cod sursa (job #3135216) | Cod sursa (job #1690517)
#include <fstream>
using namespace std;
ifstream cin("bfs.in");
ofstream cout("bfs.out");
typedef struct nod
{
int nr;
nod *next;
}* graf;
graf a[100005];
int N,M,x,y,S;
int c[100005],par[100005];
bool viz[100005];
void bfs(){
int st=1,dr=1;
par[1]=S;
viz[S]=1;
while(st<=dr){
for(graf p=a[par[st]];p!=NULL;p=p->next){
if(!viz[p->nr]){
par[++dr]=p->nr;
c[p->nr]=c[par[st]]+1;
viz[p->nr]=1;
}
}
st++;
}
}
void add(graf &p, int n)
{
graf r=new nod;
r->nr=n;
r->next=p;
p=r;
}
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
cin>>N>>M>>S;
for(int i=1; i<=M; ++i)
{
cin>>x>>y;
add(a[x],y);
}
bfs();
for(int i=1;i<=N;i++){
if(i==S)cout<<0<<" ";
else if(c[i]==0)cout<<-1<<" ";
else cout<<c[i]<<" ";
}
return 0;
}