Advertisement
Guest User

Untitled

a guest
Dec 15th, 2019
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.16 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. const int N = 1e6 + 3;
  5.  
  6. int n, k, ans = 2e9;
  7.  
  8. vector <int> g[N], p[N], q[N], u(N, -1);
  9.  
  10. void f(int v, int x, int cnt, vector <int> l, vector <int> r) {
  11.     u[v] = x;
  12.     for (int j = 0; j < k; ++j) {
  13.         l[j] = max(l[j], p[v][j]);
  14.         r[j] = min(r[j], q[v][j]);
  15.         if (l[j] > r[j]) {
  16.             ans = min(ans, cnt);
  17.             break;
  18.         }
  19.     }
  20.     for (auto i : g[v])
  21.         if (u[i] - x)
  22.             f(i, x, cnt + 1, l, r);
  23. }
  24.  
  25. int main() {
  26.     freopen("input.txt", "r", stdin);
  27.     ios_base::sync_with_stdio(0);
  28.     cin.tie(0);
  29.  
  30.     cin >> n >> k;
  31.     for (int i = 0; i < n; ++i) {
  32.         int x;
  33.         for (int j = 0; j < k; ++j) {
  34.             cin >> x;
  35.             p[i].push_back(x);
  36.         }
  37.         for (int j = 0; j < k; ++j) {
  38.             cin >> x;
  39.             q[i].push_back(x);
  40.         }
  41.     }
  42.     for (int i = 1; i < n; ++i) {
  43.         int u, v;
  44.         cin >> u >> v;
  45.         g[--u].push_back(--v);
  46.         g[v].push_back(u);
  47.     }
  48.     for (int i = 0; i < n; ++i)
  49.         f(i, i, 0, p[i], q[i]);
  50.     cout << (ans - 2e9 ? ans : -1);
  51.  
  52.     return 0;
  53. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement