Pagini recente » Cod sursa (job #2412427) | Cod sursa (job #1943772) | Cod sursa (job #3148451) | Cod sursa (job #2423913) | Cod sursa (job #2805852)
#include <cstdio>
#include <vector>
#include <deque>
using namespace std;
FILE* f, * g;
vector <int> v[100002];
int d[100002];
deque <int> q;
bool viz[100002];
void bfs(int nod)
{
q.push_back(nod);
while (!q.empty())
{
nod = q.front();
q.pop_front();
for (int i = 0;i < v[nod].size();++i)
{
if (d[v[nod][i]] > d[nod] + 1)
{
d[v[nod][i]] = d[nod] + 1;
q.push_back(v[nod][i]);
}
}
}
}
int main()
{
f = fopen("bfs.in", "r");
g = fopen("bfs.out", "w");
int m, n, s;
fscanf(f, "%d %d %d", &n, &m, &s);
int x, y;
for (int i = 1;i <= m;++i)
{
fscanf(f, "%d %d", &x, &y);
v[x].push_back(y);
}
for (int i = 1;i <= n;++i)
d[i] = 1999999999;
d[s] = 0;
bfs(s);
for (int i = 1;i <= n;++i)
{
if (d[i] == 1999999999)
fprintf(g, "-1 ");
else
fprintf(g, "%d ", d[i]);
}
fclose(f);
fclose(g);
return 0;
}