Pagini recente » Cod sursa (job #2437292) | Cod sursa (job #344496) | Cod sursa (job #2998491) | Cod sursa (job #2141402) | Cod sursa (job #765630)
Cod sursa(job #765630)
#include <cstdio>
#include <cstring>
#include <vector>
#include <queue>
#define maxN 100005
using namespace std;
FILE *f = fopen ("bfs.in","r");
FILE *g = fopen ("bfs.out","w");
int n, m, S, viz[maxN], dist[maxN];
vector<int> L[maxN];
queue<int> Q;
void read()
{
fscanf (f, "%d%d%d", &n, &m, &S);
while (m--)
{
int a, b;
fscanf (f, "%d%d", &a, &b);
L[a].push_back(b);
}
memset (dist, -1, sizeof(dist) );
}
void bf(int nod)
{
int x;
viz[nod] = 1; dist[nod] = 0;
Q.push(nod);
while ( !Q.empty() )
{
x = Q.front(); Q.pop();
for (int i = 0; i < L[x].size(); i++)
if ( !viz[ L[x][i] ] )
{
dist[ L[x][i] ] = dist[x] + 1;
viz[ L[x][i] ] = 1;
Q.push(L[x][i]);
}
}
}
int main()
{
read();
bf(S);
for (int i = 1; i <= n; i++)
fprintf (g, "%d ", dist[i]);
fclose(f);
fclose(g);
return 0;
}