Cod sursa(job #874732)

Utilizator VladMSBonta vlad valentin VladMS Data 9 februarie 2013 11:19:41
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.69 kb
#include <fstream>
using namespace std;
ifstream fin("bfs.in");
ofstream fout("bfs.out");
struct nod
{
int info;
nod *next;
};
nod *p,*l[100001];
int x,y,i,j,n,st,viz[3][100001],cs,cd,co[100001],m,nr,ok,start;
int main()
{
fin>>n>>m>>st;
for(i=1;i<=m;++i)
{
fin>>x>>y;
p=new nod;
p->next=l[x];
p->info=y;
l[x]=p;
}
cs=1;
cd=1;
start=st;
viz[1][st]=1;
while(cs<=cd)
{ok=0;
while(l[st])
{
if(viz[1][l[st]->info]==0)
{co[cd++]=l[st]->info;
viz[2][l[st]->info]=viz[2][st]+1;
viz[1][l[st]->info]=1;
ok=1;
}
l[st]=l[st]->next;
}
st=co[cs++];
}
for(i=1;i<=n;++i)
if(viz[2][i]==0&&i!=start)
    fout<<viz[2][i]-1<<" ";
    else
    fout<<viz[2][i]<<" ";
return 0;
}