Pagini recente » Cod sursa (job #745758) | Cod sursa (job #1895299) | Cod sursa (job #2934935) | Cod sursa (job #2838251) | Cod sursa (job #2789640)
#include <bits/stdc++.h>
using namespace std;
#define nr 100002
class Graf
{
private:
int nr_varfuri;
int nr_arce;
vector <pair<int,int>> 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;
for (int i=0;i<this->nr_arce;i++)
{
fin>>a>>b;
arce.push_back(make_pair(a,b));
}
queue<int> coada;
coada.push(sursa);
vizitat[sursa] = true;
distanta[sursa] = 0;
while (!coada.empty())
{
int nod_crt = coada.front();
//cout<<nod_crt<<endl;
coada.pop();
for (int i=0;i<this->nr_arce;i++)
{
if (arce[i].first == nod_crt && !vizitat[arce[i].second])
{
coada.push(arce[i].second);
vizitat[arce[i].second] = true;
distanta[arce[i].second] = 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;
}