Advertisement
edutedu

DF SI BF GRAFURI

Jan 28th, 2020
245
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.55 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. void initV(int v[10])
  6. {
  7. for(int i=0; i<10; i++)
  8. v[i]=0;
  9. }
  10.  
  11. void citire_grafn(int &n, int a[10][10])
  12. {
  13. int c,b;
  14. cout<<"Introduceti numarul de noduri: ";
  15. cin>>n;
  16. cout<<"Introduceti nr de noduri si incheiati cu perechea 0 0";
  17. do{
  18. cin>>c>>b;
  19. a[c][b]=a[b][c]=1;
  20. }while(c && b);
  21. }
  22. void citire_graf_fisiern(int &n, int a[10][10])
  23. {
  24. int c,b;
  25. cin>>n;
  26. for(int i=1; i<=n; i++)
  27. for(b=1; b<=n; b++)
  28. cin>>a[c][b];
  29. }
  30.  
  31. void BF(int a[10][10], int n, int nod)
  32. {
  33. int in=0, sf=0;
  34. sol[in]=nod;
  35. sf++;
  36. viz[nod]=1;
  37. while(in<=sf)
  38. {
  39. for(int i=1; i<=n; i++)
  40. if(a[sol[in]][i]==1 && viz[i]==0)
  41. {
  42. sol[sf]=i;
  43. viz[i]=1;
  44. sf++;
  45. }
  46. in++;
  47. }
  48. cout<<"\nBF("<<nod<<"): ";
  49. for(int i=0; i<n; i++)
  50. cout<<sol[i]<<" ";
  51. }
  52.  
  53. void DF(int a[10][10], int n, int nod)
  54. {
  55. cout<<nod<<" ";
  56. viz[nod]=1;
  57. for(int i=1; i<=n; i++)
  58. if(a[nod][i]==1 && viz[i]==0)
  59. DF(a, n, i, viz);
  60. }
  61.  
  62. int main()
  63. {
  64. int sol[10], viz[10];
  65. initV(sol);
  66. initV(viz);
  67. int sf=-1;
  68. int i, j, n, max=0, a[10][10], d[10];
  69. for(i=1; i<=n; i++)
  70. {
  71. d[i]=0;
  72. for(j=1; j<=n; j++)
  73. a[i][j]=0;
  74. }
  75. citire_grafn(n,a);
  76. BF(a, n, 2);
  77. for(int i=1; i<=n; i++)
  78. {
  79. initV(viz);
  80. cout<<"\nDF("<<i<<"): ";
  81. DF(a, n, i, viz)
  82. }
  83. return 0;
  84. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement