Advertisement
Five_NT

[C++]Graf eulerian

Jan 9th, 2014
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.12 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3.  
  4. using namespace std;
  5.  
  6. int a[100][100], i, j, n, p, viz[10];
  7.  
  8. void citire();
  9. int grad(int a);
  10. int grad_izolat(int i);
  11. int grad_par();
  12. void DF(int j);
  13.  
  14. int main()
  15. {
  16.     citire();
  17.     int ok=0;
  18.     DF(1);
  19.     for(i=1; i<=n; i++)
  20.         if(viz[i] == 0) ok = 1;
  21.     if(grad_izolat(i) && grad_par() && ok == 0)
  22.         cout<<"     **  Graficul este eulerian      **      ";
  23.     else cout<<"    **  Graficul nu este eulerian   **  ";
  24.     return 0;
  25. }
  26.  
  27. void citire()
  28. {
  29.     ifstream f("c.in");
  30.     f>>n>>p;
  31.     for(i=1; i<=n; i++)
  32.         for(j=1; j<=n; j++)
  33.             f>>a[i][j];
  34.     f.close();
  35. }
  36.  
  37. int grad(int i)
  38. {
  39.     int gr=0;
  40.     for(j=1; j<=n; j++)
  41.         if(a[i][j] == 1)
  42.             gr++;
  43.     return gr;
  44. }
  45.  
  46. int grad_izolat(int i)
  47. {
  48.     for(i=1; i<=n; i++)
  49.         if(grad(i) == 0)
  50.             return 0;
  51.     return 1;
  52. }
  53.  
  54. int grad_par()
  55. {
  56.     for(i=1; i<=n; i++)
  57.         if(grad(i)%2)
  58.             return 0;
  59.     return 1;
  60. }
  61.  
  62. void DF(int p)
  63. {
  64.     int j;
  65.     viz[p]=1;
  66.     for(j=1; j<=n; j++)
  67.         if(a[p][j] == 1 && viz[j] == 0)
  68.             DF(j);
  69. }
  70. /*  c.in    */
  71. 8 1
  72. 0 1 0 1 0 0 0 0
  73. 1 0 1 0 1 0 0 1
  74. 0 1 0 0 0 0 0 1
  75. 1 0 0 0 1 1 1 0
  76. 0 1 0 1 0 0 1 1
  77. 0 0 0 1 0 0 1 0
  78. 0 0 0 1 1 1 0 1
  79. 0 1 1 0 1 0 1 0
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement