Pagini recente » Cod sursa (job #911067) | Cod sursa (job #2454093) | Cod sursa (job #1983741) | Cod sursa (job #2437764) | Cod sursa (job #797245)
Cod sursa(job #797245)
#include <cstdio>
#include <vector>
#include <queue>
#define NMAX 100001
using namespace std;
FILE *inFile = fopen ("bfs.in", "r");
FILE *outFile = fopen ("bfs.out", "w");
vector <int> G[NMAX];
queue < pair <int, int> > Q;
int n;
int s;
int res[NMAX];
void read()
{
int m;
int x;
int y;
fscanf (inFile, "%d %d %d\n", &n, &m, &s);
while (m --)
{
fscanf (inFile, "%d %d\n", &x, &y);
G[x].push_back(y);
}
}
void bfs()
{
Q.push(make_pair(s, 0));
while (!Q.empty())
{
pair <int, int> aux = Q.front();
for (unsigned int j = 0; j < G[aux.first].size(); ++ j)
{
int v = G[aux.first][j];
if (res[v] == 0 && v != s)
{
res[v] = 1 + aux.second;
Q.push(make_pair(v, 1 + aux.second));
}
}
Q.pop();
}
}
void print()
{
for (int i = 1; i <= n; ++ i)
if (res[i] == 0 && i != s)
fprintf (outFile, "-1 ");
else
fprintf (outFile, "%d ", res[i]);
fprintf (outFile, "\n");
}
int main()
{
read();
bfs();
print();
return 0;
}