Pagini recente » Cod sursa (job #2261001) | Cod sursa (job #2129937) | Cod sursa (job #1646536) | Cod sursa (job #2063413) | Cod sursa (job #2063522)
#include<bits/stdc++.h>
using namespace std;
#define MAXN 100005
bool seen[MAXN];
vector <int> g[MAXN];
int drum[MAXN];
int q[MAXN];
void bfs(int node){
int left, right, i;
left=right=1;
q[left]=node;
seen[node]=1;
while(left<=right){
node=q[left];
// printf("%d %d\n", node, drum[node]);
left++;
for(i=0; i<g[node].size(); i++)
if(seen[g[node][i]]==0){
drum[g[node][i]]=drum[node]+1;
right++; q[right]=g[node][i];
seen[g[node][i]]=1;
}
}
}
int main(){
FILE*fin=fopen("bfs.in", "r");
FILE*fout=fopen("bfs.out", "w");
int n, m, s, x, y, i;
fscanf(fin, "%d%d%d", &n, &m, &s);
for(i=1; i<=m; i++){
fscanf(fin, "%d%d", &x, &y);
g[x].push_back(y);
}
bfs(s);
for(i=1; i<=n; i++){
if(i!=s){
if(drum[i]!=0)
fprintf(fout, "%d ", drum[i]);
else
fprintf(fout, "-1 ");
}
else
fprintf(fout, "0 ");
}
return 0;
}