Pagini recente » Cod sursa (job #56322) | Cod sursa (job #433259) | Cod sursa (job #1432682) | qqlow | Cod sursa (job #2351319)
#include <bits/stdc++.h>
int dist[100001], trecut[100001];
std::vector <int> v[100001];
struct coad{
int nod, dist;
} coada[1000001];
int main(){
FILE *fin, *fout;
int n, m, s, i, a, b, x, dx, str, nd;
fin=fopen("bfs.in", "r");
fout=fopen("bfs.out", "w");
fscanf(fin, "%d%d%d", &n, &m, &s);
for(i=0;i<m;i++){
fscanf(fin, "%d%d", &a, &b);
v[a].push_back(b);
}
for(i=1;i<=n;i++)
dist[i]=-1;
coada[0].nod=s;
coada[0].dist=0;
trecut[s]=1;
str=0;
nd=1;
while(str<nd){
x=coada[str].nod;
dx=coada[str].dist;
trecut[x]=1;
dist[x]=dx;
for(i=0;i<v[x].size();i++)
if(trecut[v[x][i]]==0){
coada[nd].nod=v[x][i];
coada[nd++].dist=dx+1;
}
str++;
}
for(i=1;i<=n;i++)
fprintf(fout, "%d ", dist[i]);
fclose(fin);
fclose(fout);
return 0;
}