Pagini recente » Cod sursa (job #2481026) | Cod sursa (job #1665148) | Cod sursa (job #592406) | Cod sursa (job #2352890) | Cod sursa (job #1735019)
#include<fstream>
#include<string.h>
#include<ctype.h>
#include<iostream>
#include<algorithm>
#include<map>
#include<unordered_map>
#include<array>
#include<deque>
#include<unordered_set>
using namespace std;
vector <int> v[100001];
vector <int> ::iterator it;
deque <int> deq;
int n, m, node, i, start, finish, rez[100001], nr, j, el;
bool viz[100001];
int main()
{
ifstream f("bfs.in");
ofstream g("bfs.out");
f >> n >> m >> node;
for (i = 1; i <= m; i++)
{
f >> start >> finish;
v[start].push_back(finish);
}
deq.push_back(node);
nr=1;
rez[node] = -1;
while (deq.size() != 0)
{
m = deq.size();
for (i = 1; i <=m ; i++)
{
el = *deq.begin();
deq.pop_front();
if (viz[el] == 0)
{
for (it = v[el].begin(); it != v[el].end(); it++)
{
if (rez[*it] == 0)
rez[*it] = nr;
deq.push_back(*it);
}
viz[el] = 1;
}
}
nr++;
}
for (i = 1; i <= n; i++)
if (rez[i] == 0)
g << "-1 ";
else
if (rez[i] == -1)
g << "0 ";
else
g << rez[i]<<" ";
return 0;
}