Pagini recente » Cod sursa (job #3319311) | Diferente pentru problema/dictator intre reviziile 3 si 4 | Borderou de evaluare (job #1596606) | Borderou de evaluare (job #1596371) | Cod sursa (job #1855386)
#include<fstream>
using namespace std;
ifstream fin("bfs.in");
ofstream fout("bfs.out");
struct nod
{
int vecin;
nod *adr;
};
nod *L[100002];
int N,M,S,viz[100002];
void BFS(int vfstart,int viz[],nod *L[])
{
int coada [100002],pr,ul,i;
nod *p;
///fout<<vfstart<<" ";
viz[vfstart]=1;
coada[1]=vfstart;
pr=1;
ul=1;
while(pr<=ul)
{
for(p=L[coada[pr]];p!=0;p=p->adr)
{
if(viz[p->vecin]==0)
{
///fout<<i<<" ";
viz[p->vecin]=viz[coada[pr]]+1;
ul++;
coada[ul]=p->vecin;
}
}
pr++;
}
}
int main ()
{
nod *p;
int i,x,y;
fin>>N>>M>>S;
for(i=1;i<=M;i++)
{
fin>>x>>y;
p=new nod;
p->vecin=y;
p->adr=L[x];
L[x]=p;
}
BFS(S,viz,L);
for(i=1;i<=N;i++)
{
fout<<viz[i]-1<<" ";
}
fin.close();
fout.close();
return 0;
}