Pagini recente » Monitorul de evaluare | Monitorul de evaluare | Diferente pentru utilizator/vman intre reviziile 7 si 8 | Junior Challenge 2025 - Clasament | Cod sursa (job #1828961)
#include <fstream>
using namespace std;
ifstream fin("bfs.in");
ofstream fout("bfs.out");
struct nod{
int inf;
nod *urm;
};
nod *l[1000001];
int n,m,r,d[100001],u,c[100001];
bool v[100001];
void cit(){
int i,j,k;
nod *q;
fin>>n>>m>>r;
for(i=1;i<=n;i++)
l[i]=0;
for(k=1;k<=m;k++){
fin>>i>>j;
q=new nod;
q->inf=j;
q->urm=l[i];
l[i]=q;
/*q=new nod;
q->inf=i;
q->urm=l[j];
l[j]=q;*/
}
fin.close();
}
void bfs(int k){
int i,p;
nod *q;
p=u=1;
c[p]=k;v[r]=1;
while(p<=u){
k=c[p];
q=l[k];
while(q){
i=q->inf;
if(v[i]==0)
v[i]=1,d[i]=d[k]+1,c[++u]=i;
q=q->urm;
}
p++;
}
}
int main(){
cit();
bfs(r);
int i;
for(i=1;i<=n;i++)
if(i==r)
fout<<0<<" ";
else{
if(d[i]==0)
fout<<-1<<" ";
else
fout<<d[i]<<" ";
}
fout.close();
return 0;
}