Pagini recente » Cod sursa (job #2084071) | Cod sursa (job #2495444) | Cod sursa (job #1630144) | Cod sursa (job #1275306) | Cod sursa (job #705919)
Cod sursa(job #705919)
#include<stdio.h>
#include <vector>
#include <queue>
using namespace std;
long i,j,nr2,n,nr,m,x,y,s,pas,rez[100000];
vector<long> a[100000];
queue<long> q;
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_back(x);
}
q.push(s);
pas=1; rez[s]=0;
while(!q.empty())
{
nr2=q.size();
for(j=0;j<nr2;j++)
{
x=q.front();
nr=a[x].size();
for ( i=0 ; i < nr; i++ )
if(rez[a[x][i]]==-1)
{
rez[a[x][i]]=pas;
q.push(a[x][i]);
}
q.pop();
}
pas++;
}
for(i=1;i<=n;i++) printf("%ld ",rez[i]);
printf("\n");
return 0;
}