Advertisement
Guest User

Untitled

a guest
Jul 22nd, 2019
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.09 KB | None | 0 0
  1. //BFS
  2. #include<iostream>
  3. #include<queue>
  4. using namespace std;
  5.  
  6. queue<int> qu;
  7. bool **a, *s;
  8. int *trace, dau, cuoi, n, m;
  9.  
  10. void nhap(){
  11.     cin>> n >> m >> dau >> cuoi;
  12.     dau-- ; cuoi-- ;
  13.     a = new bool*[n];
  14.     s = new bool [n];
  15.     trace = new int [n];
  16.     for(int i = 0; i < n; i++) a [i] = new bool [n];
  17.    
  18.     for(int i = 0; i < n; i++){
  19.         s [i] = true;
  20.         for(int j = 0 ; j < n ; j++) a [i][j] = false;
  21.     }
  22.    
  23.     int u, v;
  24.     for(int i = 0; i < m ; i++){
  25.         cin>> u >> v;
  26.         u--; v--;
  27.         a [u][v] = true;
  28.         a [v][u] = true;
  29.     }
  30.    
  31.     trace [dau] = -1;
  32. }
  33.  
  34. void BFS(){
  35.     qu.push(dau);
  36.     s [dau] = false;
  37.     int u, i;
  38.     do{
  39.         u = qu.front();
  40.         for(i = 0 ; i < n ; i++) if(s [i] && a [u][i]){
  41.             s [i] = false;
  42.             trace [i] = u;
  43.             cout << i + 1 << " ";
  44.             qu.push(i);
  45.         }
  46.         qu.pop();
  47.     }
  48.     while(!qu.empty());
  49. }
  50.  
  51. void res(int i){
  52.     if(trace[i] >= 0) res(trace [i]);
  53.     cout<< i + 1 <<" ";
  54. }
  55.  
  56. int main(){
  57.     nhap();
  58.     cout<< dau + 1<< " can visit : " << dau + 1 << " ";
  59.     BFS();
  60.     cout<<endl;
  61.     res(cuoi);
  62.     delete []s;
  63.     delete []trace;
  64.     for(int i = 0; i < n ; i++) delete []a [i];
  65.     delete []a;
  66. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement