Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- const int N = 1e6 + 3;
- int n, k, ans = 2e9;
- vector <int> g[N], p[N], q[N], u(N, -1);
- void f(int v, int x, int cnt, vector <int> l, vector <int> r) {
- u[v] = x;
- for (int j = 0; j < k; ++j) {
- l[j] = max(l[j], p[v][j]);
- r[j] = min(r[j], q[v][j]);
- if (l[j] > r[j]) {
- ans = min(ans, cnt);
- break;
- }
- }
- for (auto i : g[v])
- if (u[i] - x)
- f(i, x, cnt + 1, l, r);
- }
- int main() {
- freopen("input.txt", "r", stdin);
- ios_base::sync_with_stdio(0);
- cin.tie(0);
- cin >> n >> k;
- for (int i = 0; i < n; ++i) {
- int x;
- for (int j = 0; j < k; ++j) {
- cin >> x;
- p[i].push_back(x);
- }
- for (int j = 0; j < k; ++j) {
- cin >> x;
- q[i].push_back(x);
- }
- }
- for (int i = 1; i < n; ++i) {
- int u, v;
- cin >> u >> v;
- g[--u].push_back(--v);
- g[v].push_back(u);
- }
- for (int i = 0; i < n; ++i)
- f(i, i, 0, p[i], q[i]);
- cout << (ans - 2e9 ? ans : -1);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement