Pagini recente » Cod sursa (job #1790424) | Cod sursa (job #1184267) | Cod sursa (job #1830984) | Cod sursa (job #1114002) | Cod sursa (job #2378990)
#include <iostream>
#include <fstream>
#include <vector>
int bfa(int node, std::vector <int> graf[], int* viz, int finalNode)
{
bool found = 0;
int min = 2147483647, aux;
if (node == finalNode)
return 0;
viz[node] = 1;
for (int i = 0; i < graf[node].size(); i++)
if (viz[graf[node][i]] == 0)
{
aux = bfa(graf[node][i], graf, viz, finalNode);
if (aux != -1 && aux < min)
{
min = aux;
found = 1;
}
}
if (found == 1)
return 1+min;
else
return -1;
}
int main()
{
std::vector <int> graf[100001];
std::ifstream in("bfs.in");
std::ofstream out("bfs.out");
int m, n, x, y, s;
in >> n >> m >> s;
for (int i = 0; i < m; i++)
{
in >> x >> y;
graf[x].push_back(y);
}
int *viz = new int[n + 1];
for (int i = 1; i <= n ; i++)
{
for (int i = 1; i <= n; i++)
viz[i] = 0;
out << bfa(s, graf, viz, i)<<" ";
}
in.close();
out.close();
return 0;
}