Pagini recente » Cod sursa (job #1024841) | Cod sursa (job #16855) | Cod sursa (job #1029291) | Cod sursa (job #2204417) | Cod sursa (job #2857702)
#include <stdio.h>
#include <vector>
#include <queue>
using namespace std;
#define MAX_N 100001
vector<int> graph[MAX_N];
queue<int> bfs;
int d[MAX_N];
void bfss(int node){
int qf;
bfs.push(node);
d[node]=1;
while(!bfs.empty()){
qf=bfs.front();
for(int n : graph[qf]){
if(d[n]==0) {
bfs.push(n);
d[n]=d[qf]+1;
}
}
bfs.pop();
}
}
int main(){
FILE *fin,*fout;
fin=fopen("bfs.in","r");
fout=fopen("bfs.out","w");
int n,m,i,a,b,s;
fscanf(fin,"%d%d%d",&n,&m,&s);
for(i=0;i<m;i++){
fscanf(fin,"%d%d",&a,&b);
graph[a].push_back(b);
}
bfss(s);
for(i=1;i<=n;i++)
fprintf(fout,"%d ",d[i]-1);
fclose(fin);
fclose(fout);
return 0;
}