Pagini recente » Cod sursa (job #3265092) | Cod sursa (job #2951271) | Cod sursa (job #2539744) | Cod sursa (job #874129) | Cod sursa (job #641639)
Cod sursa(job #641639)
#include <cstdlib>
#include <iostream>
#include<vector>
using namespace std;
vector<int> muchii[100001];
int sel[100001];
void bf(int nod_sursa ,int numar_noduri)
{
vector<int> coada_bf;
coada_bf.push_back(nod_sursa);
int element_actual=0;
sel[nod_sursa]=1;
while( element_actual< coada_bf.size())
{ int nod_actual=coada_bf[element_actual];
int nr_vecini= muchii[nod_actual].size();
for(int j=0;j < nr_vecini; ++j)
{ if (sel[muchii[nod_actual][j]]==0)
coada_bf.push_back(muchii[nod_actual][j]);
sel[muchii[nod_actual][j]]=sel[nod_actual]+1;
}
++element_actual;
}
}
int main()
{ int numar_noduri,nr_muchii,nod_sursa;
freopen("bfs.in","r",stdin);
freopen("bfs.out","w",stdout);
scanf("%d %d %d", &numar_noduri,&nr_muchii,&nod_sursa);
int prima,destinatie;
for( int i=1;i<=nr_muchii;i++)
{ scanf("%d% d", &prima,&destinatie);
muchii[prima].push_back(destinatie);
}
bf(nod_sursa,numar_noduri);
for (int j=1;j<=numar_noduri;j++)
printf("%d ",sel[j]);
return 0;
}