Pagini recente » Cod sursa (job #616846) | Cod sursa (job #2901543) | Cod sursa (job #621869) | Monitorul de evaluare | Cod sursa (job #1165049)
#include <fstream>
#include <queue>
#include <vector>
#include <iostream>
using namespace std;
int cost[100001], n, m, s;
bool viz[100001];
queue <int> my_queue;
vector <int> graf[100001];
ifstream f("bfs.in");
ofstream g("bfs.out");
int main()
{
f >> n >> m >> s;
for (int i = 1; i <= n; i ++)
{
viz[i] = false;
cost[i] = -1;
}
int t1, t2;
for (int i = 1; i <= m; i ++)
{
f >> t1 >> t2;
graf[t1].push_back(t2);
}
my_queue.push(s);
viz[s] = true;
cost[s] = 0;
int temp;
while (!my_queue.empty())
{
temp = my_queue.front();
my_queue.pop();
for (int i = 0; i < graf[temp].size(); i ++)
if (!viz[graf[temp][i]])
{
my_queue.push(graf[temp][i]);
viz[graf[temp][i]] = true;
cost[graf[temp][i]] = cost[temp] + 1;
}
}
for (int i = 1; i <= n; i ++)
g << cost[i] << " ";
f.close();
g.close();
return 0;
}