Pagini recente » Cod sursa (job #2452129) | Cod sursa (job #410614) | Cod sursa (job #1943089) | Cod sursa (job #2572589) | Cod sursa (job #356751)
Cod sursa(job #356751)
#include <stdio.h>
#include <vector>
#define Nmax 100005
#define Mmax 1000005
using namespace std;
int N,M,S,nrarc[Nmax],C[Nmax];
vector<int> G[Nmax];
void citire()
{freopen("bfs.in","r",stdin);
int i,a,b;
scanf("%d %d %d",&N,&M,&S);
for(i=1;i<=M;i++)
{scanf("%d %d",&a,&b);
G[a].push_back(b);
}
memset(nrarc,-1, sizeof(nrarc));
nrarc[S]=0;
fclose(stdin);
}
void bfs(int nod)
{vector<int>::iterator it;
for(it=G[nod].begin();it!=G[nod].end();it++)
if(nrarc[*it]==-1)
{nrarc[*it]=nrarc[nod]+1;
bfs(*it);}
}
void scrie()
{freopen("bfs.out","w",stdout);
for(int i=1;i<=N;i++) printf("%d ",nrarc[i]);
printf("\n");fclose(stdout);
}
int main()
{citire();
bfs(S);
scrie();
return 0;
}