Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <fstream>
- #define N 105
- using namespace std;
- ifstream fin("BFS.in");
- ofstream fout("BFS.out");
- struct nod
- {
- int info;
- nod* urm;
- }*L[N];
- int n,m,nd;
- bool viz[N];
- int prim, ultim, C[N];
- void Citire()
- {
- int x,y;
- fin>>n>>m>>nd;
- while(fin>>x>>y)
- {
- nod* p,*q;
- p=new nod;
- p->info=y;
- p->urm=L[x];
- L[x]=p;
- q=new nod;///neorientate
- q->info=x;
- q->urm=L[y];
- L[y]=q;
- }
- }
- void Init(int nd)
- {
- prim=ultim=1;
- viz[nd]=1;
- C[prim]=nd;
- }
- void BFS()
- {
- int varf,nr;
- nod*p;
- while(prim<=ultim)
- {
- varf=C[prim++];
- p=L[varf];
- while(p)
- {
- nr=p->info;
- if(viz[nr]==0)
- {
- C[++ultim]=nr;
- viz[nr]=1;
- }
- p=p->urm;
- }
- }
- }
- void BFS_r()
- {
- int varf,nr;
- nod*p;
- if(prim<=ultim)
- {
- varf=C[prim++];
- p=L[varf];
- while(p)
- {
- nr=p->info;
- if(viz[nr]==0)
- {
- C[++ultim]=nr;
- viz[nr]=1;
- }
- p=p->urm;
- }
- BFS_r();
- }
- }
- void Afisare()
- {
- for(int i=1;i<=ultim;i++)
- fout<<C[i]<<' ';
- }
- int main()
- {
- Citire();
- Init(nd);
- BFS();
- Afisare();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement