Pagini recente » Monitorul de evaluare | Cod sursa (job #2474837) | Istoria paginii utilizator/popescuiulian2 | Cod sursa (job #2016994) | Cod sursa (job #1750891)
#include<iostream>
#include<fstream>
using namespace std;
struct nod
{
int info;
nod *urm;
};
nod *a[100004];
int distante [100004];
int coada[1000003];
void bfs(int nod)
{
int inceput,sfarsit;
inceput=sfarsit=1;
coada[inceput]=nod;
distante[nod]++;
while(inceput<=sfarsit)
{
int tata=coada[inceput];
struct nod *q=a[tata];
while(q->urm)
{
if(distante[q->info]==-1)
{sfarsit++;
coada[sfarsit]=q->info;
distante[q->info]=distante[tata]+1;
}
q=q->urm;
}
inceput++;
}
}
int main()
{
ifstream f("bfs.in");
ofstream g("bfs.out");
int n,m,s;
f>>n>>m>>s;
for(int i=1;i<=n;i++)
{a[i]=new nod;
distante[i]=-1;}
for(int i=0;i<m;i++)
{
int nod1,nod2;
f>>nod1>>nod2;
nod *p;
p=a[nod1];
while(p->urm!=NULL)
p=p->urm;
p->info=nod2;
p->urm=new nod;
p=a[nod1];
}
bfs(s);
for(int i=1;i<=n;i++)
g<<distante[i]<<" ";
}