Pagini recente » Autentificare | Istoria paginii runda/oni_2010_ziua2 | Cod sursa (job #3228034) | Cod sursa (job #2960707) | Cod sursa (job #1650868)
#include <fstream>
#include <vector>
#include <deque>
#define u_int unsigned int
using namespace std;
vector<u_int> L[100000 + 1];
vector<int> cost(100000 + 1, -1);
vector<bool> tata(100000 + 1, 0);
void bfs(int nod)
{
deque<u_int> coada;
cost[nod] = 0;
coada.push_back(nod);
tata[nod] = 1;
while(coada.empty() == false)
{
for(u_int j = 0; j < L[coada.front()].size(); j++)
{
if(cost[L[coada.front()][j]] == -1)
{
coada.push_back(L[coada.front()][j]);
cost[coada.back()] = cost[coada.front()] + 1;
tata[coada.back()] = 1;
}
}
coada.pop_front();
}
}
int main()
{
ifstream fin("bfs.in");
ofstream fout("bfs.out");
u_int n, m, s;
fin >> n >> m >> s;
for(u_int i = 1; i <= m; i++)
{
u_int x, y;
fin >> x >>y;
L[x].push_back(y);
}
bfs(s);
for(u_int i = 1; i <= n; i++)
{
fout << cost[i] << ' ';
}
return 0;
}