Pagini recente » Cod sursa (job #2610742) | Cod sursa (job #719573) | bbbba | Cod sursa (job #2377969) | Cod sursa (job #546240)
Cod sursa(job #546240)
#include <cstdio>
#include <vector>
#include <deque>
using namespace std;
const int FARA_DRUM = -1;
const int N = 100001;
int n,s;
vector<int> vecin[N];
deque<int> coada;
int d[N];
void citire()
{
int m;
int a,b;
scanf("%i%i%i",&n,&m,&s);
for (int i = 1; i <= m; ++i)
{
scanf("%i%i",&a,&b);
vecin[a].push_back(b);
}
}
void initializare_bfs()
{
for (int i = 1; i <= n; ++i)
d[i] = FARA_DRUM;
}
void bfs()
{
int nod,nod_dest;
initializare_bfs();
coada.push_back(s);
d[s] = 0;
while (coada.size() > 0)
{
nod = coada.front();
for (unsigned int i = 0; i < vecin[nod].size(); ++i)
{
nod_dest = vecin[nod][i];
if (d[nod_dest] != FARA_DRUM)
continue;
coada.push_back(nod_dest);
d[nod_dest] = d[nod] + 1;
}
coada.pop_front();
}
}
void afisare()
{
for (int i = 1; i <= n; ++i)
printf("%i ",d[i]);
}
int main()
{
freopen("bfs.in","r",stdin);
freopen("bfs.out","w",stdout);
citire();
bfs();
afisare();
return 0;
}