Advertisement
HmHimu

bfs_mat

Jul 20th, 2017
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.69 KB | None | 0 0
  1.  
  2. #include<iostream>
  3. #include<bits/stdc++.h>
  4. #include<Queue>
  5. using namespace std;
  6.  
  7.  
  8.  
  9.  
  10. int v,i,j,a,b,k=1,s;
  11. int p[100],d[2000000],clr[100];
  12. int adj[100][100],u;
  13.  
  14.  
  15. void BFS(int s)
  16. {
  17.  
  18.  
  19. for(i=1;i<=v;i++)
  20. {
  21. clr[i]=0;
  22. p[i]=-1;
  23. d[i]=0;
  24. }
  25.  
  26.  
  27.  
  28. clr[s]=1;
  29. //p[s]=-1;
  30. queue<int> Q;
  31.  
  32. Q.push(s);
  33.  
  34. while(!Q.empty()){
  35.  
  36. u=Q.front();
  37. Q.pop();
  38.  
  39. for(i=1;i<=v;i++)
  40. {
  41. if(adj[u][i]==1 && clr[i]==0)
  42. {
  43. clr[i]=1;
  44. d[i]=d[u]+1;
  45. p[i]=u;
  46. Q.push(i);
  47. }
  48. }
  49. clr[u]=2;
  50. }
  51.  
  52. cout<<"previous"<<endl;
  53. for(i=1;i<=v;i++)
  54. {
  55. cout<<p[i]<<" ";
  56. }
  57. cout<<endl;
  58.  
  59. cout<<"cost"<<endl;
  60. for(i=1;i<=v;i++)
  61. {
  62. cout<<d[i]<<" ";
  63. }
  64. cout<<endl;
  65.  
  66. cout<<"color"<<endl;
  67. for(i=1;i<=v;i++)
  68. {
  69. cout<<clr[i]<<" ";
  70. }
  71.  
  72.  
  73.  
  74.  
  75.  
  76. }
  77.  
  78.  
  79. int main()
  80. {
  81.  
  82.  
  83. cout<<"vertex: ";
  84. cin>>v;
  85.  
  86. do{
  87.  
  88. cout<<"Edge"<<k<<":";
  89. cin>> a >> b ;
  90. cout<<endl;
  91.  
  92. if(a>v+1 || b>v+1)
  93. {
  94. cout<<"Input is invalid"<<endl;
  95.  
  96. }
  97. else{
  98.  
  99. adj[a][b]=1;
  100.  
  101. adj[b][a]=1;
  102.  
  103.  
  104.  
  105. }
  106. k++;
  107.  
  108. }while(a!=0 && b!=0);
  109.  
  110.  
  111.  
  112.  
  113. for(i=1;i<=v;i++){
  114.  
  115. int count=0;
  116. for(j=1;j<=v;j++)
  117. {
  118.  
  119. cout<<adj[i][j]<<" ";
  120.  
  121.  
  122.  
  123. }
  124. cout<<endl;
  125. }
  126.  
  127. cout<<"Enter source node"<<endl;
  128. cin>>s;
  129. if(s>v || s< 1)
  130. cout<<"invalid input"<<endl;
  131. else
  132. BFS(s);
  133.  
  134.  
  135. return 0;
  136.  
  137. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement