Pagini recente » Cod sursa (job #1115497) | Cod sursa (job #365921) | Cod sursa (job #2358703) | Cod sursa (job #2430529) | Cod sursa (job #916596)
Cod sursa(job #916596)
#include<cstdio>
#include<vector>
using namespace std;
vector <int> Graf[100010];
int G[100010],S[100010],Cost[100010];
int L;
void BFS(int nod){
int i,j;
memset (Cost , -1 , sizeof(Cost) );
L=1;
Cost[nod]=0;
S[L]=nod;
for(i = 1 ; i <= L ; i ++)
for(j=0;j < G[S[i]] ; j ++)
if(Cost[Graf[S[i]][j]] == -1)
{
S[++L]=Graf[S[i]][j];
Cost[S[L]] = Cost[S[i]]+1;
}
}
int main(){
freopen("bfs.in","r",stdin);
freopen("bfs.out","w",stdout);
int N,M,Start;
scanf("%d%d%d" ,&N , &M ,&Start);
int i,nod1,nod2;
for( i = 1 ; i <= M ; i ++){
scanf("%d%d" ,&nod1 , &nod2);
Graf[nod1].push_back(nod2);
}
for( i = 1 ; i <= N ; i ++)
G[i] = Graf[i].size();
BFS(Start);
for ( i = 1 ; i <= N ; i ++)
printf("%d " , Cost[i]);
return 0;
}