Advertisement
Bobert0032

Пособие/«Полуполный граф»

Jul 24th, 2023
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.65 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3.  
  4. using namespace std;
  5.  
  6. void solve() {
  7.     int n, m;
  8.     cin >> n >> m; // считываем кол-во вершин и рёбер в графе
  9.     vector<vector<int>> G(n, vector<int>(n)); // G[i][j] - кол-во рёбер i -> j в графе
  10.     for (int i = 0; i < m; ++i) { // Итерируемся по рёбрам
  11.         int a, b;
  12.         cin >> a >> b; // считываем начало и коней i-го ребра
  13.         // Уменьшаем a и b на 1, так как в задаче нумерация вершин идёт с 1, а нам удобнее, если бы она шла с 0
  14.         a--;
  15.         b--;
  16.         G[a][b]++; // Если G[a][b] = x, то в графе есть x рёбер, которые начинаются в a и заканчиваются в b
  17.     }
  18.     for (int i = 0; i < n; ++i) { // Перебираем 1-ую вершину для проверки
  19.         for (int j = 0; j < n; ++j) { // Перебираем 2-ую вершину для проверки
  20.             if (i == j) { // Пропускаем ребра, являющиеся петлями (По условию)
  21.                 continue;
  22.             }
  23.             if (!(G[i][j] >= 1 || G[j][i] >= 1)) { // Если у пары {i; j} нет ребра, то выводим "NO" и завершаемся
  24.                 cout << "NO";
  25.                 return;
  26.             }
  27.         }
  28.     }
  29.     cout << "YES"; // Выводим, что граф полуполный, если ни одна из проверок не выявила обратного
  30. }
  31.  
  32. int main() {
  33.     solve();
  34.     return 0;
  35. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement