Advertisement
ssr17

BFS

Jan 23rd, 2017
152
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.52 KB | None | 0 0
  1. #include <iostream>
  2. #include<queue>
  3.  
  4. using namespace std;
  5.  
  6. int v;
  7. int matrix[100][100];
  8. void BFS(int s);
  9.  
  10. int main ()
  11. {
  12.     int  r, c, n, s;
  13.     int edge = 1;
  14.  
  15.     cout<<"Input no of vertices: ";
  16.     cin>>v;
  17.  
  18.     do{
  19.         cout<<"Edge "<<edge<<": ";
  20.         cin>>r>>c;
  21.          if(r>v || c>v)
  22.             cout<<"Invalid input"<<endl;
  23.         else{
  24.             matrix[r][c] = 1;
  25.             matrix[c][r] = 1;
  26.             edge++;
  27.         }
  28.     }while(r != 0 && c!=0);
  29.  
  30.     cout<<"Enter the source node : ";
  31.     cin>>s;
  32.  
  33.     BFS(s);
  34.  
  35.     return 0;
  36. }
  37.  
  38. void BFS (int s)
  39. {
  40.     queue <int> Q;
  41.     int i,j,u;
  42.     int clr[100], dis[100], prev[100];
  43.  
  44.     for(i=0; i<=v; i++)
  45.     {
  46.         clr[i] = 0;
  47.         dis[i] = 200000000;
  48.         prev[i] = -1;
  49.     }
  50.  
  51.     clr[s] = 1;
  52.     dis[s] = 0;
  53.     Q.push(s);
  54.  
  55.     while(!Q.empty())
  56.     {
  57.         u = Q.front();
  58.         Q.pop();
  59.  
  60.         for(i=1; i<=v; i++)
  61.         {
  62.             if(matrix[u][i] == 1 && clr[i] == 0)
  63.             {
  64.                 clr[i] = 1;
  65.                 dis[i] = dis[u] + 1;
  66.                 prev[i] = u;
  67.                 Q.push(i);
  68.             }
  69.         }
  70.         clr[u] = 2;
  71.     }
  72.     cout<<endl<<"vertex no  : ";
  73.     for(i=1; i<=v; i++)
  74.         cout<<i<<" ";
  75.     cout<<endl<<"colour     : ";
  76.     for(i=1; i<=v; i++)
  77.         cout<<clr[i]<<" ";
  78.     cout<<endl<<"distance   : ";
  79.     for(i=1; i<=v; i++)
  80.         cout<<dis[i]<<" ";
  81.     cout<<endl<<"previous   : ";
  82.     for(i=1; i<=v; i++)
  83.         cout<<prev[i]<<" ";
  84. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement