Pagini recente » Cod sursa (job #1583687) | Cod sursa (job #2804869) | Cod sursa (job #2158184) | Monitorul de evaluare | Cod sursa (job #705900)
Cod sursa(job #705900)
#include<stdio.h>
#include <vector>
#include <queue>
using namespace std;
long i,n,m,x,y,s,pas,rez[100000];
queue<long> q,a[100000];
int main()
{
freopen("bfs.in","r",stdin);
freopen("bfs.out","w",stdout);
scanf("%ld %ld %ld",&n,&m,&s);
for(i=1;i<=n;i++) rez[i]=-1;
for(i=1;i<=m;i++)
{
scanf("%ld %ld",&y,&x);
a[y].push(x);
}
q.push(s);
pas=1; rez[s]=0;
while(!q.empty())
{
x=q.front();
while(!a[x].empty())
{
y=a[x].front();
if(rez[y]==-1)
{
rez[y]=pas;
q.push(y);
}
a[x].pop();
}
pas++;
q.pop();
}
for(i=1;i<=n;i++) printf("%ld ",rez[i]);
printf("\n");
return 0;
}