Pagini recente » Cod sursa (job #2038008) | Cod sursa (job #2148521) | Cod sursa (job #2282395) | Cod sursa (job #2424895) | Cod sursa (job #2423724)
#include <iostream>
#include <fstream>
#include <vector>
#include <list>
using namespace std;
int main()
{
list<int> graph[100001];
int nodes, edges, source;
ifstream f("bfs.in");
f >> nodes >> edges >> source;
for (int i = 0; i < edges; i++)
{
int a, b;
f >> a >> b;
graph[a].push_back(b);
}
f.close();
int vis[100001];
int dis[100001];
for (int i = 1; i <= nodes; i++)
{
vis[i] = 0;
dis[i] = -1;
}
list<int> queue;
queue.push_back(source);
dis[source] = 0;
vis[source] = 1;
while (!queue.empty())
{
int index = queue.front();
queue.pop_front();
for(auto it:graph[index])
{
int x = it;
if (vis[x] == 0)
{
queue.push_back(x);
dis[x] = dis[index] + 1;
vis[x] = 1;
}
}
}
ofstream g("bfs.out");
for (int i = 1; i <= nodes; i++)
g << dis[i] << " ";
g.close();
}