Pagini recente » Cod sursa (job #2261326) | Cod sursa (job #2008898) | Cod sursa (job #1882380) | Cod sursa (job #2990960) | Cod sursa (job #1267482)
#include <cstdio>
#include <vector>
#include <queue>
using namespace std;
vector<int> g[100001];
queue<int> q;
int vis[100001];
int main()
{
FILE *in = fopen("bfs.in", "r");
FILE *out = fopen("bfs.out", "w");
int n, m, s;
fscanf(in, "%d%d%d", &n, &m, &s);
int x, y;
for (; m >= 0; --m)
{
fscanf(in, "%d%d", &x, &y);
g[x].push_back(y);
}
for (int i = 1; i <= n; ++i)
vis[i] = -1;
q.push(s);
vis[s] = 0;
while (!q.empty())
{
x = q.front();
q.pop();
for (int i = 0; i < g[x].size(); ++i)
{
y = g[x][i];
if (vis[y] == -1)
{
vis[y] = vis[x]+1;
q.push(y);
}
}
}
fprintf(out, "%d", vis[1]);
for (int i = 2; i <= n; ++i)
fprintf(out, " %d", vis[i]);
fprintf(out, "\n");
return 0;
}