Pagini recente » Stapanu tau | Cod sursa (job #206891) | Cod sursa (job #426544) | Mihnea Andreescu | Cod sursa (job #712930)
Cod sursa(job #712930)
#include <iostream>
#include <stdio.h>
#include <vector>
#include <fstream>
#define nmax 100005
using namespace std;
ifstream in("bfs.in");
ofstream out("bfs.out");
vector<int> v[nmax];
int n, m, start, s[nmax], cost[nmax];
void citeste()
{ int x, y;
in>>n>>m>>start;
for (int i=1; i<=n; ++i)
{
in>>x>>y;
v[x].push_back(y);
}
}
void bfs(int nod)
{ int L = 1;
s[L] = nod;
cost[nod] = 0;
for (int i=1; i<=L; ++i)
{
for (unsigned j = 0; j < v[ s[i] ].size(); ++j)
if ( cost[ v[s[i]][j] ] == -1 )
{
s[++L] = v[s[i]][j];
cost[s[L]] = cost[s[i]] + 1;
}
}
}
int main()
{
citeste();
for (int i=1; i<=n; ++i)
cost[i] = -1;
bfs(start);
for (int i=1; i<=n; ++i)
out<<cost[i]<<" ";
return 0;
}