Pagini recente » Cod sursa (job #2851005) | Cod sursa (job #1874852) | Cod sursa (job #2066922) | Cod sursa (job #1949895) | Cod sursa (job #1340296)
#include <iostream>
#include "string.h"
#include <queue>
#include <vector>
#include "stdio.h"
using namespace std;
int n, m, s, c[100010];
vector<vector<int> > lista(100010);
std::queue<int> q;
int main()
{
memset(c, -1, sizeof(c));
freopen("bfs.in","r",stdin);
freopen("bfs.out","w",stdout);
scanf("%d %d %d",&n,&m,&s);
for (int i = 1; i <= m; ++i)
{
int t1, t2;
scanf("%d %d", &t1, &t2);
lista[t1].push_back(t2);
}
q.push(s);
c[s] = 0;
while(!q.empty()){
int currentNode = q.front();
q.pop();
for (std::vector<int>::iterator i = lista[currentNode].begin(); i != lista[currentNode].end(); ++i)
{
if(c[*i] == -1){
q.push(*i);
c[*i] = c[currentNode] + 1;
}
}
}
for (int i = 1; i <= n; ++i)
printf("%d ", c[i]);
return 0;
}