Submission #2546023


Source Code Expand

#include<bits/stdc++.h>
using namespace std;
using ll = long long;

const int N = 1e5;
vector<int> g[N];
vector<int> v(N, -1);
int ml[N], mr[N];

int imp = 0;
pair<int, int> dfs(int i, int p, int l, int r) {
  if(v[i] != -1) {
    if((l % 2 + 2) % 2 != v[i] % 2 || (v[i] < l || v[i] > r)) {
      imp = 1;
      cerr << 1 << endl;
      return make_pair(0, 0);
    }
    l = r = v[i];
  }
  int nl = l, nr = r;
  for(int j : g[i]) if(j != p) {
    auto d = dfs(j, i, l - 1, r + 1);
    nl = max(nl, d.first);
    nr = min(nr, d.second);
  }
  if(nl > nr) imp = 1, cerr << 2 << endl;
  ml[i] = nl;
  mr[i] = nr;
  return make_pair(nl - 1, nr + 1);
}

void dfs2(int i, int p, int l) {
  l = max(l, ml[i]);
  if(v[i] == -1) {
    v[i] = l;
  }
  for(int j : g[i]) if(j != p) {
    dfs2(j, i, v[i] - 1);
  }
}

int main() {
  ios::sync_with_stdio(false), cin.tie(0);
  int n, k; cin >> n;
  for(int i = 0; i < n - 1; i++) {
    int a, b; cin >> a >> b;
    a--; b--;
    g[a].emplace_back(b);
    g[b].emplace_back(a);
  }
  int p = -1;
  cin >> k;
  for(int i = 0; i < k; i++) {
    int a, b; cin >> a >> b;
    a--;
    v[a] = b;
  }
  for(int i = 0; i < n; i++) if(v[i] != -1) p = i;
  dfs(p, -1, v[p], v[p]);
  dfs2(p, -1, v[p]);
  if(imp) {
    cout << "No" << endl;
  } else {
    cout << "Yes" << endl;
    for(int i = 0; i < n; i++) {
      cout << v[i] << endl;
    }
  }
}

Submission Info

Submission Time
Task E - Integers on a Tree
User luma
Language C++14 (GCC 5.4.1)
Score 800
Code Size 1448 Byte
Status AC
Exec Time 206 ms
Memory 15360 KB

Judge Result

Set Name sample All
Score / Max Score 0 / 0 800 / 800
Status
AC × 3
AC × 39
Set Name Test Cases
sample sample_01.txt, sample_02.txt, sample_03.txt
All binary_01.txt, binary_02.txt, hand_01.txt, hand_02.txt, hand_03.txt, kary_01.txt, kary_02.txt, kary_03.txt, line_01.txt, line_02.txt, line_03.txt, line_04.txt, line_05.txt, line_06.txt, random0_01.txt, random1_01.txt, random1_02.txt, random1_03.txt, random1_04.txt, random1_05.txt, random1_06.txt, random1_07.txt, random1_08.txt, random2_01.txt, random2_02.txt, random2_03.txt, random2_04.txt, random2_05.txt, random2_06.txt, random3_01.txt, random3_02.txt, random4_01.txt, random4_02.txt, random4_03.txt, sample_01.txt, sample_02.txt, sample_03.txt, star_01.txt, star_02.txt
Case Name Status Exec Time Memory
binary_01.txt AC 186 ms 11520 KB
binary_02.txt AC 70 ms 10752 KB
hand_01.txt AC 3 ms 2944 KB
hand_02.txt AC 2 ms 2944 KB
hand_03.txt AC 2 ms 2944 KB
kary_01.txt AC 30 ms 6912 KB
kary_02.txt AC 184 ms 7552 KB
kary_03.txt AC 29 ms 6912 KB
line_01.txt AC 34 ms 10880 KB
line_02.txt AC 184 ms 12032 KB
line_03.txt AC 183 ms 14720 KB
line_04.txt AC 186 ms 15360 KB
line_05.txt AC 90 ms 12928 KB
line_06.txt AC 110 ms 14720 KB
random0_01.txt AC 44 ms 6272 KB
random1_01.txt AC 189 ms 7680 KB
random1_02.txt AC 190 ms 7680 KB
random1_03.txt AC 191 ms 7680 KB
random1_04.txt AC 196 ms 7680 KB
random1_05.txt AC 186 ms 7680 KB
random1_06.txt AC 189 ms 7680 KB
random1_07.txt AC 190 ms 7680 KB
random1_08.txt AC 206 ms 7680 KB
random2_01.txt AC 42 ms 6912 KB
random2_02.txt AC 41 ms 6912 KB
random2_03.txt AC 42 ms 6912 KB
random2_04.txt AC 43 ms 6912 KB
random2_05.txt AC 50 ms 6912 KB
random2_06.txt AC 56 ms 6912 KB
random3_01.txt AC 42 ms 6912 KB
random3_02.txt AC 46 ms 6912 KB
random4_01.txt AC 190 ms 7680 KB
random4_02.txt AC 187 ms 7680 KB
random4_03.txt AC 193 ms 7680 KB
sample_01.txt AC 3 ms 2944 KB
sample_02.txt AC 3 ms 2944 KB
sample_03.txt AC 2 ms 2944 KB
star_01.txt AC 184 ms 7928 KB
star_02.txt AC 50 ms 7288 KB