fork(1) download
  1. #include <iostream>
  2. #include <fstream>
  3. #define dimensiune 100
  4.  
  5. using namespace std;
  6.  
  7. void citire(int &n, int &m, int a[][dimensiune])
  8. {
  9. int e1,e2;
  10. ifstream in("conex.in");
  11. in>>n>>m;
  12. for(int i=1; i<=m; i++)
  13. {
  14. in>>e1>>e2;
  15. a[e1][e2]=1;
  16. a[e2][e1]=1;
  17. }
  18. in.close();
  19. }
  20.  
  21. void afisare(int n, int a[][dimensiune])
  22. {
  23. cout<<"Matricea de adiacenta este:"<<endl;
  24. for (int i = 1; i <= n; i++)
  25. {
  26. for (int j = 1; j <=n; j++)
  27. {
  28. cout<<a[i][j]<<" ";
  29. }
  30. cout<<endl;
  31. }
  32. }
  33.  
  34. void afisare_elemente_conexe(int n, int culoare, int viz[])
  35. {
  36. cout<<endl<<"Elementele conexe sunt "<<culoare-1<<endl;
  37. int ok = 0;
  38. for (int c = 0; c <= culoare; c++)
  39. {
  40. for(int i = 1; i <= n; i++)
  41. if(viz[i] == c)
  42. {
  43. cout<<i<<" ";
  44. ok = 1;
  45. }
  46. if(ok == 1) cout<<endl;
  47. ok = 0;
  48. }
  49. }
  50.  
  51. int legatura(int a[][dimensiune], int x, int y)
  52. {
  53. return (a[x][y] == 1);
  54. }
  55.  
  56. void BFS(int a[][dimensiune], int n, int viz[], int coada[], int ns, int c)
  57. {
  58. int i;
  59. coada[1]=ns;
  60. viz[ns]=c;
  61. int pi=1;
  62. int ps=1;
  63. while(pi<=ps)
  64. {
  65. for(i=1;i<=n;i++)
  66. if(viz[i]==0 and legatura(a, coada[pi], i))
  67. {
  68. coada[++ps]=i;
  69. viz[i]=c;
  70. }
  71. pi +=+ 1;
  72. }
  73. }
  74.  
  75.  
  76.  
  77. int main()
  78. {
  79. int c=0,i,n,m;
  80. int a[dimensiune][dimensiune];
  81. int viz[dimensiune] = {0}, coada[dimensiune] = {0};
  82. citire(n,m,a);
  83. afisare(n,a);
  84. for(i=0;i<=n;i++)
  85. {
  86. if(viz[i]==0)
  87. {
  88. c++;
  89. BFS(a,n,viz,coada,i,c);
  90. }
  91. }
  92.  
  93. if(c==2) cout<<"Graful este conex";
  94. else cout<<"Graful nu este conex";
  95.  
  96. afisare_elemente_conexe(n,c,viz);
  97. }
  98.  
Success #stdin #stdout 0.01s 5436KB
stdin
Standard input is empty
stdout
Matricea de adiacenta este:
Graful nu este conex
Elementele conexe sunt 0