HmHimu

BFS(LIST FULL)

May 25th, 2017
49
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.74 KB | None | 0 0
  1. #include<iostream>
  2. #include<list>
  3. #include<queue>
  4. using namespace std;
  5. list<int>adj[100];
  6. list<int>::iterator it;
  7. int prev[100],d[100],color[100];
  8.  
  9. void BFS(int s,int v)
  10. {
  11. for(int i=1;i<=v;i++){
  12. prev[i]=-1;
  13. color[i]=0;
  14. d[i]=0;
  15. }
  16. queue<int> q;
  17. color[s]=0;
  18. q.push(s);
  19. while(!q.empty()){
  20. int u=q.front();
  21. q.pop();
  22. for(it=adj[u].begin();it!=adj[u].end();it++){
  23. int k=*it;
  24. if(color[k]==0){
  25. color[k]=1;
  26. prev[k]=u;
  27. d[k]=d[u]+1;
  28. q.push(k);
  29.  
  30. }
  31. }
  32. color[u]=2;
  33. }
  34.  
  35. }
  36.  
  37. int main()
  38. {
  39. int v;
  40. cout<<"vertex: ";
  41. cin>>v;
  42. for(int i=1;;i++){
  43. int m,n;
  44. cout<<"Edge "<<i<<": ";
  45. cin>>m>>n;
  46. if(m==0&&n==0){
  47. break;
  48. }
  49. else if(m>v||n>v){
  50. cout<<"Please Right Input: ";
  51. cout<<"Edge "<<i++<<": ";
  52. cin>>m>>n;
  53. adj[m].push_back(n);
  54. adj[n].push_back(m);
  55. }
  56. else{
  57. adj[m].push_back(n);
  58. adj[n].push_back(m);
  59. }
  60. }
  61. for(int i=1;i<=v;i++){
  62. cout<<"adj["<<i<<"]";
  63. for(it=adj[i].begin();it!=adj[i].end();it++){
  64. cout<<"->"<<*it;
  65. }
  66. cout<<endl;
  67.  
  68. }
  69. cout<<"Input Source: ";
  70. int s;
  71. cin>>s;
  72. BFS(s,v);
  73. cout<<"COLOR: ";
  74. for(int i=1;i<=v;i++){
  75. cout<<color[i]<<" ";
  76. }
  77. cout<<endl;
  78. cout<<"COST: ";
  79. for(int i=1;i<=v;i++){
  80. cout<<d[i]<<" ";
  81. }
  82. cout<<endl;
  83. cout<<"PREVIOUS: ";
  84. for(int i=1;i<=v;i++){
  85. cout<<prev[i]<<" ";
  86. }
  87. cout<<endl;
  88.  
  89.  
  90. }
Add Comment
Please, Sign In to add comment