Advertisement
allia

базовые свойства

Dec 21st, 2020
684
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.65 KB | None | 0 0
  1. #include<iostream>
  2. #include<string>
  3.  
  4. using namespace std;
  5.  
  6. class Graph
  7. {
  8.   private:
  9.   bool orient;
  10.   int n, **arr, **vse_rebra, shet_reber;
  11.  
  12.   public:
  13.   Graph (int **matrix, int x, int shet)
  14.   {
  15.     n = x;
  16.     arr = matrix;
  17.     shet_reber = shet;
  18.   }
  19.   void spisok ();
  20.   void get_spisok_smejnosti();
  21.   void get_spisok_reber();
  22.   int get_orgraph();
  23.   int get_w();
  24.   int get_smejn();
  25.   int tranz();
  26. };
  27.     int Graph::get_orgraph()
  28.   {
  29.     int znach = 0;
  30.     for (int i =0; i < n; i++)
  31.      for ( int j = 0; j < n; j++)
  32.       if (arr[i][j] > 0 && arr[i][j] != arr[j][i])
  33.       znach++;
  34.    
  35.     if (znach > 0)
  36.      znach = 1;
  37.     else znach = -1;
  38.  
  39.     return znach;
  40.   }
  41.  
  42.   int Graph::get_w()
  43.   {
  44.     int znach = 0;
  45.     for (int i =0; i < n; i++)
  46.      for ( int j = 0; j < n; j++)
  47.       if (arr[i][j] > 1)
  48.       znach++;
  49.    
  50.     if (znach > 0)
  51.      znach = 1;
  52.     else znach = -1;
  53.     return znach;
  54.   }
  55.  
  56.   int Graph::tranz()
  57.   {
  58.     int znach = 0;
  59.     for (int i =0; i < n; i++)
  60.      for (int j = 0; j< n; j++)
  61.       if (arr[i][j])
  62.         for (int k = 0; k < n; k++)
  63.          if (arr[j][k] && !arr[i][k] && i != k && j != k)
  64.           znach++;
  65.    
  66.     if (znach > 0)
  67.      znach = -1;
  68.     else znach = 1;
  69.  
  70.     return znach;
  71.   }
  72.   void Graph::spisok ()
  73.   {
  74.     int shet = 0;
  75.  
  76.      vse_rebra = new int*[shet_reber];
  77.  
  78.      for ( int i = 0; i < shet_reber; i++)
  79.        vse_rebra[i] = new int[2];
  80.  
  81.     for (int i =0; i < n; i++)
  82.      for (int j = 0; j < n; j++)  
  83.      if (arr[i][j] > 0)
  84.      {
  85.        vse_rebra[shet][0] = i+1;
  86.        vse_rebra[shet][1] = j+1;
  87.        shet++;
  88.      }
  89.   }
  90.  
  91.   void Graph::get_spisok_reber()
  92.   {
  93.     for (int i=0; i<shet_reber; i++)
  94.     {
  95.       for (int j=0; j<2; j++)
  96.       {
  97.         cout.width(3);
  98.         cout << vse_rebra[i][j] << " ";
  99.       }
  100.      cout << endl;
  101.     }
  102.   }
  103.   void Graph::get_spisok_smejnosti()
  104.   {
  105.     for (int i =0; i < n; i++)
  106.     {
  107.       cout << i+1 << ":" << " ";
  108.        for (int j = 0; j < n; j++)  
  109.         if (arr[i][j] > 0)
  110.          cout << j+1 << " ";
  111.         cout << endl;
  112.     }
  113.   }
  114.  
  115. int main ()
  116. {
  117.  int n, shet_reber = 0;
  118.  cin >> n;
  119.  
  120. int **arr = new int*[n];
  121.  
  122. for ( int i = 0; i < n; i++)
  123.      arr[i] = new int[n];
  124.    
  125. for (int i =0; i < n; i++)
  126.   for (int j =0; j < n; j++)  
  127.      {
  128.        cin >> arr[i][j];
  129.         if (arr[i][j] > 0)
  130.          shet_reber++;
  131.      }
  132.  
  133.  Graph object(arr, n, shet_reber);
  134.  object.spisok();
  135.  
  136.  cout << object.get_orgraph() << endl;
  137.  cout << object.get_w() << endl;
  138.  cout << object.tranz() << endl;
  139.  if (shet_reber == n*(n-1))
  140.   cout << 1 << endl;
  141.   else cout << -1 << endl;
  142. }
  143.  
  144.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement