Pagini recente » Cod sursa (job #2078462) | Cod sursa (job #341789) | Cod sursa (job #2008416) | Cod sursa (job #1004830) | Cod sursa (job #2792574)
#include <bits/stdc++.h>
using namespace std;
ifstream in("bfs.in");
ofstream out("bfs.out");
const int MAX = 100001;
class Graf
{
int NrNoduri;
vector<int> Adiacenta[MAX];
public:
Graf(int NrNoduri);
void AdaugaMuchie(int nod, int nodConectat);
void Bfs(int nod);
};
Graf::Graf(int NrNoduri)
{
this->NrNoduri = NrNoduri;
}
void Graf::AdaugaMuchie(int nod, int nodConectat)
{
Adiacenta[nod].push_back(nodConectat); /// Adauga elementul la lista lui v.
}
void Graf::Bfs(int nod)
{
int distanta[NrNoduri] = {0};
distanta[nod] = 1;
queue<int> Q;
bool Vizitat[NrNoduri] = {0};
Q.push(nod);
Vizitat[nod] = 1;
while(!Q.empty())
{
nod = Q.front();
//cout << nod << " ";
Q.pop();
for(auto i: Adiacenta[nod])
{
if(!Vizitat[i])
{
Q.push(i);
Vizitat[i] = 1;
distanta[i] = distanta[nod] + 1;
}
}
}
for(int i = 1; i < NrNoduri; i++)
out<<distanta[i] - 1<< " ";
}
int main()
{
int NrNoduri, TotalMuchii, Start;
in >> NrNoduri >> TotalMuchii >> Start;
Graf g(NrNoduri+1);
int a, b;
for(int i = 0; i < TotalMuchii; i++)
{
in >> a >> b;
g.AdaugaMuchie(a, b);
}
g.Bfs(2);
return 0;
}