Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- #define N 101
- using namespace std;
- ifstream fin("BFS.in");
- ofstream fout("BFS.out");
- int n,m,x;
- int a[N][N];
- void Citire()///citirea datelor
- {
- int i,j;
- fin>>n>>m>>x;
- while(fin>>i>>j)
- a[i][j]=a[j][i]=1;///grafuri neorientate
- }
- int C[N]; ///coada
- bool viz[N]; ///1 daca nod a fost vizitat si 0 altfel
- int pr, ul;
- int D[N]; ///distanta minima
- int T[N];///vectorul de tati
- void Init()
- {
- pr=ul=1;
- C[pr]=x; ///am introdus pe x in coada
- viz[x]=1;///am vizitat elem din coada
- D[x]=1;
- T[x]=0;
- }
- void BFS(int x)///parcurgerea in latime - conexitate , lant minim
- {
- ///initializari coada
- if(pr<=ul)///mai exista elemente in coada
- {
- int nod=C[pr]; pr++;///extrag primul element
- for(int i=1;i<=n;i++) ///parcurg nodurile
- if(a[nod][i]==1 && viz[i]==0) ///gasesc un vecin nevizitat
- {
- C[++ul]=i;///am introdus in coada varful i
- viz[i]=1;///l-am vizitat i
- D[i]=D[nod]+1;
- T[i]=nod;///nod este tata lui i
- }
- BFS(nod);
- }
- }
- void Afisare()
- {
- for(int i=1;i<=ul;i++)
- fout<<C[i]<<' ';
- }
- int main()
- {
- Citire();
- Init();
- BFS(x);
- Afisare();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement