Pagini recente » Istoria paginii utilizator/mihaipriboi | Cod sursa (job #1503940) | Monitorul de evaluare | Profil UNIBUC_Stanescu_Ghita_Ghimis | Cod sursa (job #606475)
Cod sursa(job #606475)
#include<fstream>
using namespace std;
int x,y,n,m;
struct nod{int info;nod *adr;} *v[100001],*p;
ofstream g("bfs.out");
short viz[100001];
int c[100001],s,i,d[100001];
void bf(int nod)
{ short u=1,p=1;
c[1]=nod; viz[nod]=1;
while(p<=u)
{
nod=c[p];
while(v[nod])
{
if(!viz[v[nod]->info]){ u++; d[v[nod]->info]=d[nod]+1; c[u]=v[nod]->info; viz[c[u]]=1;}
v[nod]=v[nod]->adr;
}
p++;
}
}
int main()
{
ifstream f("bfs.in");
f>>n>>m>>s;
for(i=1;i<=m;i++)
{f>>x>>y;
//add nod
p=new nod; p->info=y; p->adr=v[x]; v[x]=p;
}
//copiez nodurile initiale
bf(s);
for(i=1;i<s;i++) if(viz[i])g<<d[i]<<" "; else g<<-1<<" ";
g<<0<<" ";
for(i=s+1;i<=n;i++) if(viz[i])g<<d[i]<<" "; else g<<-1<<" ";
f.close();g.close();
return 0;}