Pagini recente » Cod sursa (job #2023518) | Cod sursa (job #2012513) | Cod sursa (job #2493984) | Cod sursa (job #1761568) | Cod sursa (job #399085)
Cod sursa(job #399085)
#include <iostream>
#include <vector>
#include <queue>
#define maxn 100010
using namespace std;
//n - noduri
//m - arce
int n,m,s,i,x,y,nod;
int cost[maxn];
vector<int> gr[maxn];
queue<int> coada;
int main()
{
freopen("bfs.in", "r", stdin);
freopen("bfs.out", "w", stdout);
cin >> n >> m >> s;
//Citesc arcele
for (i=0; i<m; i++) {
cin >> x >> y;
gr[x].push_back(y);
}
//Se seteaza toate nodurile nevizitate
fill(cost, cost+maxn, -1);
//Se adauga primul nod in coada
//Se seteaza costul 0 pt acel nod
coada.push(s);
cost[s] = 0;
while (!coada.empty()) {
//Se scoate din coada
nod = coada.front();
//Se sterge elementul din coada
coada.pop();
for (i=0; i<gr[nod].size(); i++) {
if (cost[gr[nod][i]] == -1) {
coada.push(gr[nod][i]);
cost[gr[nod][i]] = cost[nod] + 1;
}
}
}
//Afiseaza rezultatul
for (i=1;i<=n;i++) {
cout << cost[i] << " ";
}
return 0;
}