Advertisement
Guest User

Untitled

a guest
Nov 20th, 2017
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.53 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3.  
  4. using namespace std;
  5. ifstream f("date.in");
  6. //SUBIECTUL 1.
  7. int a[21][21],b[21][21],d[21],c[21],x[21],viz[21],n,m;
  8. /*void citirehmat()
  9. {
  10. int i,j,n;
  11. f>>n;
  12. for(i=1;i<=n;i++)
  13. for(j=i+1;j<=n;j++) // half of mat.
  14. f>>a[i][j];
  15. a[j][i]=a[i][j];//formez intreaga matrice.
  16. f.close();
  17. }
  18. */
  19.  
  20. /*void citirenm()
  21. {int i,j;
  22. f>>n>>m;
  23. for(i=1;i<=n;i++)
  24. {f>>x>>y;
  25. a[x][y]=a[y][x]=1;}
  26. f.close();}
  27. */
  28. void citiremat()
  29. {
  30. int i,j,k;
  31. f>>n;
  32. for(i=1;i<=n;i++)
  33. for(j=1;j<=n;j++)
  34. f>>a[i][j];
  35. while(f>>k)
  36. {
  37. m++;
  38. x[m]=k;
  39.  
  40. }
  41. f.close();
  42. }
  43. void grade()
  44. {int i,j;
  45. for(i=1;i<=n;i++)
  46. {int nr=0;
  47. for(j=1;j<=n;j++)
  48. if(a[i][j]==1)
  49. nr++;
  50. cout<<"Gradul vf "<<i<<" este: "<<nr<<endl;
  51. }}
  52.  
  53. void terminal()
  54. {
  55. int i,j;
  56. bool ok=1;
  57. for(i=1;i<=n;i++)
  58. { int nr=0;
  59. for(j=1;j<=n;j++)
  60. {if(a[i][j]==1)
  61. nr++;}
  62. if(nr==1)
  63. cout<<i<<" este varf terminal"<<endl;
  64. else ok=0;
  65. }
  66. if(ok==0) cout<<"Nu exista vf terminale"<<endl;
  67. }
  68. void izolat()
  69. {
  70. int i,j;
  71. bool ok=1;
  72. for(i=1;i<=n;i++)
  73. { int nr=0;
  74. for(j=1;j<=n;j++)
  75. {if(a[i][j]==1)
  76. nr++;}
  77. if(nr==0)
  78. cout<<i<<" este varf izolat"<<endl;
  79. else ok=0;
  80.  
  81. }
  82. if(ok==0) cout<<"Nu exista vf izolate"<<endl;
  83. }
  84. void grmaxim()
  85. {int i,j, max=0;
  86. for(i=1;i<=n;i++)
  87. for(j=1;j<=n;j++)
  88. d[i]=d[i]+a[i][j];
  89. for(i=1;i<=n;i++)
  90. if(d[i]>max)
  91. max=d[i];
  92. for(i=1;i<=n;i++)
  93. { if(d[i]==max)
  94. cout<<"varful "<<i<<" are gr.maxim = "<<max<<endl;
  95. }}
  96.  
  97. void afisare_muchii()
  98. { int i,j;
  99. for(i=1;i<=n;i++)
  100. {for(j=i+1;j<=n;j++)
  101. {if(a[i][j]==1)
  102. cout<<"( "<<i<<" "<<j<<" )";
  103. }
  104. cout<<endl;
  105. }
  106. }
  107. void liste()
  108. {int i,j;
  109. for(i=1;i<=n;i++)
  110. {cout<<"vf "<<i<<" are vecini pe | ";
  111. for(j=1;j<=n;j++)
  112. {if(a[i][j]==1)
  113. cout<<j<<", ";
  114. }
  115.  
  116. cout<<endl;
  117. }
  118. }
  119. void complet()
  120. {
  121. int i,j,m=0;
  122. for(i=1;i<=n;i++)
  123. for(j=1;j<=n;j++)
  124. if(a[i][j]==1)m++;
  125. m=m/2;
  126. if(m=n*(n-1)/2)
  127. cout<<"Complet"<<endl;
  128. else cout<<"Nu este complet"<<endl;
  129. }
  130. int lant()
  131. {
  132. int i,ok=1;
  133. for(i=1;i<m;i++)
  134. if(a[x[i]][x[i+1]]==0)
  135. ok=0;
  136. return ok;
  137. }
  138. int elementar()
  139. {
  140. int i,j,ok=1;
  141. if(lant()==1)
  142. {
  143. for(i=1;i<m;i++)
  144. for(j=1;j<=m;j++)
  145. if(x[i]==x[j])
  146. ok=0;}
  147. else ok=0;
  148. return ok;
  149. }
  150. void Roy_Warshall()
  151. {int i,j,k;
  152. for(k=1;k<=n;k++)
  153. for(i=1;i<=n;i++)
  154. for(j=1;j<=n;j++)
  155. if(b[i][j]==0&&i!=j&&i!=k&&j!=k)
  156. b[i][j]=b[i][k]*b[k][j];
  157. }
  158. void conexitate_arbore()
  159. {
  160. bool ok;
  161. int nr=0,j,i;
  162. for(i=1;i<=n;i++)
  163. for(j=1;j<=n;j++)
  164. nr+=b[i][j];
  165. if(nr==n*(n-1)/2)
  166. {
  167. cout<<"Graful este conex"<<endl;
  168. if(m==n-1) cout<<"Este arbore "<<endl;
  169. else cout<<"Nu este arbore "<<endl;
  170. }
  171. else cout<<"Graful nu este conex"<<endl;
  172. }
  173. void BF(int y)
  174. {
  175. int x,pr,ult,j;
  176. pr=ult=1;
  177. c[ult]=y;
  178. viz[y]=1;
  179. while(pr<=n)
  180. {
  181. x=c[pr];
  182. if(a[x][j]==1&&viz[j]==0)
  183. {
  184. ult++;
  185. c[ult]=j;
  186. viz[j]=1;
  187. }
  188. pr++;
  189. }
  190. }
  191. void DF(int j)
  192. {
  193. int i;
  194. viz[j]=1;
  195. cout<<j<<" ";
  196. for(i=1;i<=n;i++)
  197. if(a[j][i]==1&&viz[i]==0)
  198. DF(i);
  199. }
  200.  
  201. int main()
  202. {int i,k;
  203. citiremat();
  204. grade();
  205. terminal();
  206. izolat();
  207. grmaxim();
  208. afisare_muchii();
  209. liste();
  210. complet();
  211. if(lant())
  212. {
  213. cout<<"Este lant "<<endl;
  214. if(elementar())cout<<"Este elementar"<<endl;
  215. else cout<<"Nu este elementar"<<endl;
  216. }
  217. else cout<<"Nu este lant"<<endl;
  218. Roy_Warshall();
  219. conexitate_arbore();
  220. cout<<"Dati nodul de pornire"<<endl;
  221. cin>>k;
  222. BF(k);
  223. for(i=1;i<=n;i++)
  224. if(c[i]!=0)
  225. cout<<c[i]<<" ";
  226.  
  227. return 0;
  228. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement