Pagini recente » Cod sursa (job #2709273) | Cod sursa (job #2116685) | Cod sursa (job #2802793) | Cod sursa (job #2712573) | Cod sursa (job #2954155)
#include <fstream>
#include <vector>
using namespace std;
ifstream f("bfs.in");
ofstream g("bfs.out");
int n, m, start;
vector<int> v[100001];
int l;
int cost[100001];
void bfs(int nod)
{
vector<bool> visited(100001, false);
vector<int> q;
q.push_back(nod);
visited[start] = true;
int vis;
l = 0;
while(!q.empty())
{
vis = q[0];
//g<<vis<<" ";
q.erase(q.begin());
l++;
int ok = 0;
for(auto i : v[vis])
{
if(!visited[i])
{
ok = 1;
q.push_back(i);
visited[i] = true;
cost[i] = l;
}
}
if(ok == 0)
{
l--;
}
}
}
int main()
{
int x, y;
f>>n>>m>>start;
for(int i = 0; i<m; i++)
{
f>>x>>y;
v[x].push_back(y);
}
bfs(start);
for(int i = 1; i<=n; i++)
{
if(cost[i] == 0 && i != start)
{
g<<-1<<" ";
}
else
{
g<<cost[i]<<" ";
}
}
return 0;
}