Advertisement
edutedu

grafuri

Feb 4th, 2020
128
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.93 KB | None | 0 0
  1. #ifndef NEORIEN_H_INCLUDED
  2. #define NEORIEN_H_INCLUDED
  3.  
  4. #include <iostream>
  5. #include <fstream>
  6.  
  7.  
  8. using namespace std;
  9.  
  10. int a[10][10], n;
  11. int sol[10], viz[10];
  12. int sf=-1;
  13.  
  14. ifstream f("date.in");
  15. ifstream f1("date1.in");
  16.  
  17. void citireGraf(int a[10][10], int &n)
  18. {
  19. f>>n;
  20. for(int i=1; i<=n; i++)
  21. for(int j=1; j<=n; j++)
  22. f>>a[i][j];
  23. }
  24.  
  25. void citireMuchii(int a[10][10], int &n)
  26. {
  27. int i, j;
  28. f1>>n;
  29. while(f1>>i>>j)
  30. a[i][j]=a[j][i]=1;
  31. }
  32.  
  33. void afisareMA(int a[10][10], int n)
  34. {
  35. for(int i=1; i<=n; i++)
  36. {
  37. for(int j=1; j<=n; j++)
  38. cout<<a[i][j]<<" ";
  39. cout<<endl;
  40. }
  41. cout<<endl;
  42. }
  43.  
  44. void init(int a[10][10])
  45. {
  46. for(int i=0; i<10; i++)
  47. for(int j=0; j<10; j++)
  48. a[i][j]=0;
  49. }
  50.  
  51. int NrMuchii(int a[10][10], int n)
  52. {
  53. int rez=0;
  54. for(int i=1; i<=n; i++)
  55. for(int j=1; j<=n; j++)
  56. if(a[i][j])
  57. rez++;
  58. rez/=2;
  59. return rez;
  60. }
  61.  
  62. int grad(int a[10][10], int n, int nod)
  63. {
  64. int rez=0;
  65. for(int i=1; i<=n; i++)
  66. rez+=a[nod][i];
  67. return rez;
  68. }
  69.  
  70. int NodIzolat(int a[10][10], int n, int nod)
  71. {
  72. if(grad(a, n, nod)==0)
  73. return 1;
  74. else
  75. return 0;
  76. }
  77.  
  78. int NodTerminal(int a[10][10], int n, int nod)
  79. {
  80. if(grad(a, n, nod)==1)
  81. return 1;
  82. else
  83. return 0;
  84. }
  85.  
  86. int GradMaxim(int a[10][10], int n, int nod)
  87. {
  88. int maxim=0;
  89. for(int i=1; i<=n; i++)
  90. if(grad(a, n, i)>maxim)
  91. maxim=grad(a, n, i);
  92. return maxim;
  93. }
  94.  
  95. void initV(int v[10])
  96. {
  97. for(int i=0; i<10; i++)
  98. v[i]=0;
  99. }
  100.  
  101. void BF(int a[10][10], int n, int nod)
  102. {
  103. int sol[10], viz[10];
  104. initV(sol);
  105. initV(viz);
  106. int in=0, sf=0;
  107. sol[sf]=nod;
  108. sf++;
  109. viz[nod]=1;
  110. while(in<=sf)
  111. {
  112. for(int i=1; i<=n; i++)
  113. if(a[sol[in]][i]==1 && viz[i]==0)
  114. {
  115. sol[sf]=i;
  116. viz[i]=1;
  117. sf++;
  118. }
  119. in++;
  120. }
  121. cout<<"BF("<<nod<<"): ";
  122. for(int i=0; i<n; i++)
  123. cout<<sol[i]<<" ";
  124. }
  125.  
  126. void DF(int a[10][10], int n, int nod, int viz[10])
  127. {
  128. cout<<nod<<" ";
  129. viz[nod]=1;
  130. for(int i=1; i<=n; i++)
  131. if(a[nod][i]==1 && viz[i]==0)
  132. DF(a, n, i, viz);
  133. }
  134.  
  135. void df_r(int a[10][10], int n, int nod, int viz[10])
  136. {
  137. viz[nod]=1;
  138. for(int i=1;i<=n;i++)
  139. if(A[nod][i]==1 && viz[i]==0)
  140. {
  141. T[i]=nod;
  142. df_r(a,n,i,viz,T);
  143. }
  144. }
  145.  
  146. void DF_lant(int a[10][10], int n, int nod_st, int nod_sf, int viz[10], int )
  147. {
  148. cout<<nod_st<<" ";
  149. viz[nod_st]=1;
  150. for(int i=1;i<=n;i++)
  151. if(A[nod][k]==1 && s[k]==0)
  152. {
  153. T[k]=nod;
  154. df_r(k)
  155. }
  156. }
  157.  
  158. void refac(int nod, int T[10])
  159. {
  160. if(nod!=0)
  161. {
  162. refac(T[nod]);
  163. cout<<nod<<" ";
  164. }
  165. }
  166.  
  167.  
  168. #endif // NEORIEN_H_INCLUDED
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement