Pagini recente » Cod sursa (job #2360024) | Rating Cojocaru Alin-Ionut (alin_ionut.cojocaru) | Cod sursa (job #1058680) | Cod sursa (job #1118531) | Cod sursa (job #1581932)
#include <stdio.h>
#include <vector>
#define Nmax 100005
#include <cstring>
using namespace std;
int n,m,start;
vector<int>G[Nmax];
int S[Nmax],cost[Nmax],A[Nmax];
void read()
{
int x,y;
scanf("%d%d%d",&n,&m,&start);
for(int i=1;i<=m;i++)
{
scanf("%d%d",&x,&y);
G[x].push_back(y);
}
memset(cost,-1,sizeof(cost));
for(int i=1;i<=n;i++)
A[i]=G[i].size();
}
void BFS(int varf)
{
int i,L,j;
L=1;
cost[varf]=0;
S[L]=varf;
for(i=1;i<=L;i++)
{
for(j=0;j<A[S[i]];j++)
if(cost[G[S[i]][j]]==-1)
{
S[++L]=G[S[i]][j];
cost[S[L]]=cost[S[i]]+1;
}
}
}
int main()
{
freopen("bfs.in","r",stdin);
freopen("bfs.out","w",stdout);
read();
BFS(start);
for(int i=1;i<=n;i++)
printf("%d ",cost[i]);
}