Pagini recente » Cod sursa (job #4439) | Cod sursa (job #1783998) | Cod sursa (job #1197478) | Cod sursa (job #194755) | Cod sursa (job #826439)
Cod sursa(job #826439)
#include <cstdio>
#include <vector>
#include <queue>
#include <cstring>
#define NMAX 100005
using namespace std;
int N, M, S, dist[NMAX];
vector<int> G[NMAX];
queue<int> q;
void read(void)
{
int x, y;
FILE *f = fopen("bfs.in", "r");
fscanf(f, "%d%d%d", &N, &M, &S);
for(int i = 0; i < M ; ++i)
fscanf(f, "%d%d", &x, &y),
G[x].push_back(y);
fclose(f);
}
void BFS(void)
{
memset(dist, -1, (N+1) * sizeof(int));
dist[S] = 0;
q.push(S);
while(!q.empty())
{
int nod = q.front();
q.pop();
for(int i = 0; i < G[nod].size(); ++i)
{
int adiacNod = G[nod][i];
if(dist[adiacNod] == -1)
q.push(adiacNod),
dist[adiacNod] = dist[nod] + 1;
}
}
}
void print(void)
{
FILE *g = fopen("bfs.out", "w");
for(int i = 1; i <= N; ++i)
fprintf(g, "%d ", dist[i]);
fclose(g);
}
int main(void)
{
read();
BFS();
print();
}