Advertisement
ke_timofeeva7

баобаб

Mar 12th, 2021
140
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.46 KB | None | 0 0
  1. // баобаб
  2.  
  3. #include <iostream>
  4. #include <cmath>
  5. #include <vector>
  6. #include <queue>
  7. #include <set>
  8. #include <iterator>
  9. using namespace std;
  10.  
  11. vector <int> mark(10000);
  12. vector<set<int>> gr(10000);
  13. int mas[105][105];
  14. int ans = 0;
  15. int kol_reb = 0; // количество ребер
  16.  
  17. void in_set(int n)
  18. {
  19.     for (int i = 0; i < n; i++)
  20.     {
  21.         for (int j = 0; j < n; j++)
  22.         {
  23.             if (mas[i][j] == 1)
  24.             {
  25.                 gr[i].insert(j);
  26.                 kol_reb++;
  27.             }
  28.         }
  29.     }
  30.  
  31.     kol_reb /= 2;
  32.  
  33.     return;
  34. }
  35.  
  36. void DFS_cycle(int v, int pr) // проверка, есть ли цикл
  37. {
  38.     mark[v] = 1;
  39.  
  40.     for (int i : gr[v])
  41.     {
  42.         if (mark[i] == 0)
  43.         {
  44.             DFS_cycle(i, v);
  45.         }
  46.  
  47.         else if (i != pr)
  48.         {
  49.             ans++;
  50.         }
  51.  
  52.     }
  53.  
  54.     return;
  55. }
  56.  
  57. signed main()
  58. {
  59.     int n;
  60.     cin >> n;
  61.  
  62.     for (int i = 0; i < n; i++)
  63.     {
  64.         for (int j = 0; j < n; j++)
  65.         {
  66.             cin >> mas[i][j];
  67.         }
  68.     }
  69.  
  70.     in_set(n);
  71.  
  72.     if (kol_reb != n - 1)
  73.     {
  74.         cout << "NO";
  75.  
  76.         sp;
  77.         return 0;
  78.     }
  79.  
  80.     for (int i = 1; i <= n; i++)
  81.     {
  82.         for (int i = 0; i <= n; i++)
  83.         {
  84.             mark[i] = 0;
  85.         }
  86.  
  87.         DFS_cycle(i, -1);
  88.     }
  89.  
  90.     if (ans != 0)
  91.     {
  92.         cout << "NO";
  93.     }
  94.  
  95.     else
  96.     {
  97.         cout << "YES";
  98.     }
  99.  
  100.     return 0;
  101.  
  102. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement