Pagini recente » Borderou de evaluare (job #1561317) | Borderou de evaluare (job #2715185) | Borderou de evaluare (job #666854) | Borderou de evaluare (job #3289155) | Cod sursa (job #674012)
Cod sursa(job #674012)
#include<fstream>
using namespace std;
ifstream fin("bfs.in");
ofstream fout("bfs.out");
int n,m,c[100000],viz[100000],li=1,ls=0,start,d[100000];
struct nod {
int info;
nod *next;
};
nod *La[100001];
void add_begin(int x,int y) {
nod *n=new(nod);
n->info=y;
n->next=La[x];
La[x]=n;
}
void citire() {
fin>>n>>m;
fin>>start;
for(int i=1;i<=m;i++) {
int x,y;
fin>>x>>y;
add_begin(x,y);
}
}
int vid() {
if(li>ls) return 1;
else return 0;
}
void pune(int x) {
ls++;
c[ls]=x;
}
void scoate(int &x) {
x=c[li];
li++;
}
void bf(int i) {
pune(i);
viz[i]=1;
while(!vid()) {
int x;
scoate(x);
nod *nc=La[x];
while(nc!=NULL) {
int y=nc->info;
if(viz[y]==0) {
viz[y]=1;
pune(y);
d[y]=d[x]+1;
}
nc=nc->next;
}
}
}
int main() {
citire();
bf(start);
for(int i=1;i<=n;i++) {
if(d[i]==0&&i!=start) d[i]=-1;
fout<<d[i]<<" ";
}
return 0;
}