Pagini recente » Cod sursa (job #3003426) | Cod sursa (job #354905) | Cod sursa (job #2411800) | Cod sursa (job #1960373) | Cod sursa (job #2785822)
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
ifstream in("bfs.in");
ofstream out("bfs.out");
vector<vector<int>> edges;
vector<int> dist;
int readGraph()
{
int n;
in >> n;
int m;
in >> m;
int s;
in >> s;
edges.resize(n);
dist.resize(n, -1);
for (int i = 0; i < m; i++)
{
int a, b;
in >> a >> b;
a--;
b--;
edges[a].push_back(b);
}
return s - 1;
}
void bfs(int node)
{
queue <int> q;
q.push(node);
dist[node] = 0;
while (q.empty() == 0)
{
node = q.front();
q.pop();
for (int i = 0; i < edges[node].size(); i++)
{
int next = edges[node][i];
if (dist[next] == -1)
{
q.push(next);
dist[next] = dist[node] + 1;;
}
}
}
}
int main()
{
int rad = readGraph();
bfs(rad);
for (int i = 0; i < edges.size(); i++)
{
out << dist[i] << " ";
}
return 0;
}