Pagini recente » Cod sursa (job #1054971) | Cod sursa (job #1313078) | Cod sursa (job #1419092) | Cod sursa (job #872906) | Cod sursa (job #1197326)
#include<fstream>
#include<algorithm>
#include<cstring>
using namespace std;
typedef struct lnod {
int info;
lnod *next;
}*nod;
int i,m,n,s,x,y,head,tail,rs[100005],q[2000010];
bool viz[100005];
nod lda[100005],p;
void add(int x, nod &y)
{
nod p=new lnod;
p->info=x;
p->next=y;
y=p;
}
int main()
{
ifstream cin("bfs.in");
ofstream cout("bfs.out");
cin>>n>>m>>s;
while(m--)
{
cin>>x>>y;
add(y,lda[x]);
}
memset(rs,-1,sizeof(rs));
head=1; tail=1; q[1]=s; rs[s]=0; viz[s]=1;
while(head<=tail)
{
for(p=lda[q[head]];p;p=p->next)
if(viz[p->info]==0) {
++tail;
q[tail]=p->info;
rs[q[tail]]=rs[q[head]]+1;
viz[p->info]=1;
}
++head;
}
for(i=1;i<=n;i++) cout<<rs[i]<<' ';
return 0;
}