Pagini recente » Cod sursa (job #1889073) | Cod sursa (job #2975247) | Cod sursa (job #2071297) | Cod sursa (job #1764563) | Cod sursa (job #1470268)
#include <iostream>
#include <cstdio>
#include <vector>
#include <queue>
using namespace std;
#define iter vector<int>::iterator
const char iname[] = "bfs.in";
const char oname[] = "bfs.out";
int dist[100005];
bool viz[1000005];
vector<int> muchie[100005];
void bfs(int sursa)
{
queue <int> q;
q.push(sursa);
viz[sursa] = true;
dist[sursa] = 1;
while(!q.empty())
{
int nod = q.front();
q.pop();
for(iter it = muchie[nod].begin(); it != muchie[nod].end(); ++it)
if(!viz[*it])
{
viz[*it] = true;
q.push(*it);
dist[*it] = dist[nod] + 1;
}
}
}
int main()
{
FILE *in = fopen(iname, "r");
FILE *out = fopen(oname, "w");
int n, m, sursa;
fscanf(in, "%d %d %d\n", &n, &m, &sursa);
for(int i = 0; i < m; i++)
{
int a,b;
fscanf(in, "%d %d\n", &a, &b);
muchie[a].push_back(b);
}
bfs(sursa);
for(int i = 1; i <= n; i++)
fprintf(out, "%d ", dist[i] - 1);
return 0;
}