Pagini recente » Cod sursa (job #1964301) | Cod sursa (job #2905271) | Cod sursa (job #2767115) | Cod sursa (job #2209480) | Cod sursa (job #2635737)
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("bfs.in");
ofstream fout ("bfs.out");
int n, m, nod;
vector <int> muchii[1000005];
int distanta[1000005];
bool used[1000005];
void muchie_noua(int nod1 ,int nod2)
{
muchii[nod1].push_back(nod2);
}
void bfs(int nod)
{
used[nod] = true;
queue<int> coada;
coada.push(nod);
while(!coada.empty())
{
int vecin = coada.front();
coada.pop();
for (unsigned int i = 0; i < muchii[vecin].size(); i++)
{
if(!used[muchii[vecin][i]]){
coada.push(muchii[vecin][i]);
distanta[muchii[vecin][i]] = distanta[vecin] + 1;
used[muchii[vecin][i]] = true;
}
}
}
}
int main()
{
fin >> n >> m >> nod;
for(unsigned int i = 0; i < m; i++)
{
int nod1, nod2;
fin >> nod1 >> nod2;
muchie_noua(nod1,nod2);
}
bfs(nod);
for (unsigned int i = 1; i <= n; i++)
{
if(!used[i])
fout << -1 << " ";
else
fout << distanta[i] << " ";
}
}