Pagini recente » Cod sursa (job #2269489) | Cod sursa (job #2585760) | Cod sursa (job #3148395) | Cod sursa (job #105150) | Cod sursa (job #2758677)
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
int n, m, nod, vizitat[100001], distanta[100001];
vector <int> vecini[100001];
queue <int> coada;
void Citire()
{
ifstream f("bfs.in");
f >> n >> m >> nod;
int nod1, nod2;
for(int i = 0; i < m; i++)
{
f >> nod1 >> nod2;
vecini[nod1].push_back(nod2);
}
}
void BFS()
{
coada.push(nod);
vizitat[nod] = true;
while(coada.empty() == NULL)
{
int varf = coada.front();
coada.pop();
for(int i = 0; i < vecini[varf].size(); i++)
if(!vizitat[vecini[varf][i]])
{
vizitat[vecini[varf][i]] = true;
coada.push(vecini[varf][i]);
distanta[vecini[varf][i]] = distanta[varf] + 1;
}
}
}
void Afisare()
{
ofstream g("bfs.out");
for(int i = 1; i <= n; i++)
{
if(distanta[i] == 0 && i != nod)
g << -1 << ' ';
else
g << distanta[i] << ' ';
}
}
int main()
{
Citire();
BFS();
Afisare();
return 0;
}