Pagini recente » Cod sursa (job #607175) | Cod sursa (job #909915) | Cod sursa (job #2090475) | Cod sursa (job #977996) | Cod sursa (job #2789665)
#include <bits/stdc++.h>
using namespace std;
#define nr 100002
class Graf
{
private:
int nr_varfuri;
int nr_arce;
public:
Graf()
{
this->nr_varfuri = 0;
this->nr_arce = 0;
}
~Graf() {}
void BFS()
{
int sursa;
bool vizitat[nr];
int distanta[nr];
ifstream fin("bfs.in");
ofstream fout("bfs.out");
fin>>this->nr_varfuri>>this->nr_arce>>sursa;
for (int i=0;i<this->nr_varfuri;i++)
{
vizitat[i] = false;
}
for (int i=0;i<this->nr_varfuri;i++)
{
distanta[i] = -1;
}
int a,b;
vector <int> arce[nr_varfuri+1];
for (int i=0;i<this->nr_arce;i++)
{
fin>>a>>b;
arce[a].push_back(b);
}
queue<int> coada;
coada.push(sursa);
vizitat[sursa] = true;
distanta[sursa] = 0;
while (!coada.empty())
{
int nod_crt = coada.front();
coada.pop();
for (int i=0;i<arce[nod_crt].size();i++)
{
int nod_vec = arce[nod_crt][i];
if (!vizitat[nod_vec])
{
coada.push(nod_vec);
vizitat[nod_vec] = true;
distanta[nod_vec] = distanta[nod_crt] + 1;
}
}
}
for (int i=1;i<=this->nr_varfuri;i++)
fout<<distanta[i]<<' ';
fin.close();
fout.close();
}
void DFS();
};
int main()
{
Graf x;
x.BFS();
return 0;
}