Pagini recente » Cod sursa (job #703882) | Cod sursa (job #978873) | Cod sursa (job #1258044) | Cod sursa (job #1937451) | Cod sursa (job #2789689)
#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 nr_comp_conexe = 0;
bool vizitat[nr];
ifstream fin("dfs.in");
ofstream fout("dfs.out");
fin>>this->nr_varfuri>>this->nr_arce;
for (int i=0;i<this->nr_varfuri;i++)
{
vizitat[i] = false;
}
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);
}
for (int i=1;i<=this->nr_varfuri;i++)
{
if (!vizitat[i])
{
nr_comp_conexe++;
DF(i,arce,vizitat);
}
}
fout<<nr_comp_conexe;
fin.close();
fout.close();
}
void DF(int i,vector<int> arce[],bool vizitat[])
{
vizitat[i] = true;
for (int j=0;j<arce[i].size();j++)
{
int nod_vec = arce[i][j];
if (!vizitat[nod_vec])
DF(nod_vec,arce,vizitat);
}
}
};
int main()
{
Graf x;
x.DFS();
return 0;
}