Advertisement
apl-mhd

BFS algo

Apr 10th, 2018
132
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.38 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstdio>
  3. #include <stack>
  4. #include <queue>
  5. #include <vector>
  6. #include <climits>
  7. #include <algorithm>
  8.  
  9. #define MAX 100
  10. using namespace std;
  11.  
  12. queue<int>q;
  13. vector<int>list[MAX];
  14. vector<int>::iterator it;
  15. bool visited[MAX];
  16.  
  17.  
  18.  
  19. void visit(int u){
  20.  
  21.  
  22.     for(int i=0; i<u; i++){
  23.         visited[i] = false;
  24.  
  25.     }
  26.  
  27. }
  28.  
  29. void printGraph(int u){
  30.  
  31.  
  32.  
  33.     for(int i=0; i<u; i++){
  34.         cout<<i<<": ";
  35.  
  36.         for (int j = 0; j <list[i].size() ; ++j) {
  37.  
  38.             cout<<list[i][j]<<" ";
  39.  
  40.         }
  41.  
  42.         cout<<endl;
  43.     }
  44.  
  45. }
  46.  
  47.  
  48.  
  49. void graphInput(int node, int edge){
  50.  
  51.     visit(node);
  52.  
  53.     int u, v;
  54.  
  55.     for(int i=0; i<edge; i++) {
  56.  
  57.         cin >>u>>v;
  58.  
  59.         list[u].push_back(v);
  60.         list[v].push_back(u);
  61.  
  62.  
  63.     }
  64.  
  65.     //printGraph(u);
  66. }
  67.  
  68. void BFS(){
  69.  
  70.     q.push(0); //start from 0
  71.  
  72.     while (!q.empty()){
  73.  
  74.         int top = q.front();
  75.  
  76.         cout<<top<<" ";
  77.  
  78.         visited[top] = true;
  79.  
  80.         q.pop();
  81.  
  82.         for(int i=0; i<list[top].size(); i++){
  83.  
  84.             int temp = list[top][i];
  85.  
  86.             if(!visited[temp]){
  87.  
  88.                 visited[temp] = true;
  89.                 q.push(temp);
  90.  
  91.             }
  92.         }
  93.  
  94.  
  95.     }
  96.  
  97.  
  98. }
  99.  
  100.  
  101.  
  102.  
  103. int main() {
  104.  
  105.  
  106.     freopen("graph.txt","r",stdin);
  107.  
  108.     int a,b;
  109.     cin>>a>>b;
  110.     graphInput(a,b);
  111.  
  112.     BFS();
  113.  
  114.  
  115.  
  116.     return 0;
  117. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement