Pagini recente » Cod sursa (job #2726303) | Cod sursa (job #2342887) | Cod sursa (job #942966) | Cod sursa (job #844381) | Cod sursa (job #755358)
Cod sursa(job #755358)
#include<cstdio>
#include<vector>
FILE *f=fopen("bfs.in","r"), *g=fopen("bfs.out","w");
using namespace std;
long int n, m, s, x, y, queue[100002], p, u, used[100002], min2[100002];
vector<int> a[100100];
void dfs(){
long int i;
queue[1]=s;
used[s]=1;
p=1; u=1;
min2[s]=0;
while(p<=u){
for(i=1;i<=a[queue[p]][0];i++){
if(used[a[queue[p]][i]]==0){
u++; queue[u]=a[queue[p]][i]; min2[ queue[u] ]=min2[ queue[p] ]+1; used[queue[u]]=1;
}
}
p++;
}
}
int main(){
fscanf(f,"%ld %ld %ld\n",&n,&m,&s);
for(int i=1;i<=n;++i) a[i].push_back(0);
for(long int i=1;i<=m;i++){
fscanf(f,"%ld %ld\n",&x,&y);
a[x].push_back(y);
}
for(int i=1;i<=n;++i)
{
int var=a[i].size()-1;
a[i][0]=var;
}
dfs();
for(long int i=1;i<=n;i++){
if(used[i]==0){fprintf(g,"-1 ");}
else
fprintf(g,"%ld ",min2[i]);
}
return 0;
}