Pagini recente » Cod sursa (job #488110) | Cod sursa (job #1905032) | Cod sursa (job #2144708) | Cod sursa (job #77731) | Cod sursa (job #2819729)
#include <bits/stdc++.h>
using namespace std;
#define NMaxNoduri 100001
#define NMaxNoduri2 50005
#define NMaxNoduri3 10005
#define INFINIT 0x3f3f3f3f
#define flowmax 1005
ifstream fin("bfs.in");
ofstream fout("bfs.out");
class Clasa_Graf
{
int n, m;
vector<vector<int>> lista_adiacenta;
public:
Clasa_Graf();
~Clasa_Graf();
void bfs(int x,unordered_map<int,bool>& vector_vizitat,list<int>& coada_bfs);
void infoarena_bfs();
};
Clasa_Graf::Clasa_Graf()
{
n=0;
m=0;
}
Clasa_Graf::~Clasa_Graf()
{
}
void Clasa_Graf::bfs(int x, unordered_map<int,bool>& vector_vizitat, list<int>& coada_bfs)
{
int distanta_minima[NMaxNoduri];
memset(distanta_minima,-1, sizeof(distanta_minima));
vector_vizitat[x]=true;
coada_bfs.push_back(x);
distanta_minima[x]=0;
while(!coada_bfs.empty())
{
x = coada_bfs.front();
coada_bfs.pop_front();
for (int i=0; i<lista_adiacenta[x].size(); ++i)
{
if (distanta_minima[lista_adiacenta[x][i]]<0)
{
vector_vizitat[lista_adiacenta[x][i]] = true;
coada_bfs.push_back(lista_adiacenta[x][i]);
distanta_minima[lista_adiacenta[x][i]]=distanta_minima[x]+1;
}
}
}
for(int i=1; i<=n; i++)
fout<<distanta_minima[i]<<" ";
}
void Clasa_Graf::infoarena_bfs()
{
int st;
unordered_map<int,bool> vector_vizitat;
list<int> coada_bfs;
fin>>n>>m>>st;
for(int i=1; i<=m; i++)
{
int a,b;
fin>>a>>b;
lista_adiacenta[a].push_back(b);
}
bfs(st,vector_vizitat,coada_bfs);
lista_adiacenta.clear();
}
int main()
{
Clasa_Graf g;
//g.infoarena_dfs();
g.infoarena_bfs();
//g.infoarena_sortaret();
//g.infoarena_ctc();
//g.infoarena_biconex();
//g.leetcode_muchiecritica();
//g.havelhakimi();
//g.infoarena_dijkstra();
//g.infoarena_bellman_ford();
//g.infoarena_pmd();
//g.infoarena_apm();
//g.infoarena_roy_floyd();
//g.infoarena_darb();
//g.infoarena_maxflow();
//g.infoarena_ciclueuler();
//g.infoarena_cuplaj();
return 0;
}