Pagini recente » Cod sursa (job #1649233) | Cod sursa (job #668940) | Cod sursa (job #2724373) | Cod sursa (job #738150) | Cod sursa (job #1884732)
#include <stdio.h>
#include <stdlib.h>
#include <vector>
using namespace std;
vector <int> v[100001];
int q[100000],cost[100001];
void bfs(int root){
int poza=0,pozb=1,i;
q[0]=root;
cost[root]=1;
while(poza<pozb){
for(i=0;(unsigned int)i<v[q[poza]].size();i++){
if(cost[v[q[poza]][i]]==0){
q[pozb]=v[q[poza]][i];
cost[q[pozb]]=cost[q[poza]]+1;
pozb++;
}
}
poza++;
}
}
int main()
{
FILE*fin,*fout;
int n,m,root,a,b,i;
fin = fopen("bfs.in" ,"r");
fout = fopen("bfs.out" ,"w");
fscanf(fin, "%d%d%d" ,&n,&m,&root);
for(i=0;i<m;i++){
fscanf(fin, "%d%d" ,&a,&b);
if(a!=b)
v[a].push_back(b);
}
bfs(root);
for(i=1;i<=n;i++)
fprintf(fout, "%d ",cost[i]-1);
fprintf(fout, "\n");
fclose(fin);
fclose(fout);
return 0;
}