Pagini recente » Cod sursa (job #2944042) | Cod sursa (job #2038245) | Cod sursa (job #2902316) | Cod sursa (job #3266851) | Cod sursa (job #2064010)
#include <stdio.h>
#include <stdlib.h>
#include <vector>
using namespace std;
#define MAXN 100000
vector <int> g[MAXN+1];
int q[MAXN+1];
char seen[MAXN+1];
int dist[MAXN+1];
void bfs(int node) {
int first, last, i, l;
first=last=0;
q[last++]=node;
seen[node]=1;
while(first<last) {
node=q[first++];
l=g[node].size();
for(i=0; i<l; i++)
if(!seen[g[node][i]]) {
q[last++]=g[node][i];
seen[g[node][i]]=1;
dist[g[node][i]]=dist[node]+1;
}
}
}
int main()
{
int n, m, s, x, y, i;
FILE *fi = fopen("bfs.in", "r");
FILE *fo = fopen("bfs.out", "w");
fscanf(fi, "%d%d%d", &n, &m, &s);
for(i=0; i<m; i++) {
fscanf(fi, "%d%d", &x, &y);
g[x].push_back(y);
}
bfs(s);
for(i=1; i<=n; i++) {
if(dist[i]==0 && i!=s)
dist[i]=-1;
fprintf(fo, "%d ", dist[i]);
}
fclose(fi);
fclose(fo);
return 0;
}