Advertisement
Guest User

Untitled

a guest
Oct 31st, 2014
155
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.62 KB | None | 0 0
  1. #include<stdio.h>
  2. #include<mem.h>
  3. #include<conio.h>
  4. #include<iostream>
  5. #include<fstream>
  6. #define MAX 100
  7. #define TRUE 1
  8. #define FALSE 0
  9. int i,j;
  10. //numarul de noduri din graf
  11. int n;
  12. //matricea de adiacenta
  13. char vecin[MAX][MAX];
  14. // coada
  15. int coada[MAX];
  16. //indicele primului element din coada
  17. int first;
  18. //indicele ultimului element din coada
  19. int last;
  20. //pastreaza starea cozii
  21. int vida;
  22. /**
  23. *Initializarea cozii circulare
  24. */
  25. void initQueue(void){
  26. vida=TRUE;
  27. first=0;
  28. last=MAX;
  29. }
  30. /**
  31. *Intoarce pentru pozitia i, urmatoarea pozitie din din coada.
  32. */
  33. int next(int i){
  34. return(i+1)% MAX;
  35. }
  36. /**
  37. *Insereaza elementul a carui valoare este pastrata in variabila k in coada
  38. */
  39. void enQueue(int k){
  40. last=next(last);
  41. coada[last]=k;
  42. if (vida)
  43. vida=FALSE;
  44. }
  45. /**
  46. *Extrage un element din coada
  47. */
  48. int deQueue(){
  49. int k=coada[first];
  50. first=next(first);
  51. if (first==next(last))
  52. vida=TRUE;
  53. return k;
  54. }
  55. /**
  56. *Parcurge in latime graful pornind de la nodul de inceput k
  57. */
  58. void bfs(int k){
  59. int i;
  60. char vizitat[MAX];
  61. std::ofstream g("data.out");
  62. memset(vizitat,0,sizeof(vizitat));
  63. enQueue(k);
  64. g<<k;
  65. while(!vida){
  66. k=deQueue();
  67. for (i=0;i<n;i++)
  68. if ((vizitat[i]==0)&&(vecin[k][i]==1)){
  69. vizitat[i]=1;
  70. enQueue(i);
  71. g<<i;
  72. }
  73.  
  74. }
  75. g.close();
  76. }
  77. void readInput(){
  78. int i,j;
  79. std::ifstream f("data.in");
  80. for(i=0;i<n;i++)
  81. for(j=0;j<n;j++)
  82. std::cout<<vecin[i][j];
  83. f.close();
  84. }
  85. int main(){
  86. readInput();
  87. initQueue();
  88. bfs(0);
  89. getch();
  90. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement