#ijpcanimals. [ijpc_animals]むこのどうぶつたち と しんりんのはかい (Innocent Animals and Destruction of Forests)

[ijpc_animals]むこのどうぶつたち と しんりんのはかい (Innocent Animals and Destruction of Forests)

题目背景

福克斯 · 吉罗(Fox Jiro)在茂密的森林中与其他动物一起快乐地生活。

森林中有许多动物游乐场,这些游乐场通过多条道路相连。当然,从任何一个游乐场到任何一个游乐场都有多条路径,从一个游乐场到另一个游乐场只有一条路线。

但是动物的快乐时光并没有持续多久。人类一路来到森林,开始摧毁动物的游乐场。

如果游乐场被人类摧毁,它就无法通过,因为它对动物来说已经很危险了。如果这样做,动物的游乐场将被分割,某些游乐场将无法进入。

包括福克斯在内的动物都想以某种方式抵制这种情况,但是很遗憾他们并不可以用力量来阻止人类。

别无选择,除了动物们决定去已经分开的游乐场,这样剩下的时间似乎最长。

尽管这些动物非常贫穷,但是人类对森林的破坏似乎并没有结束。至少,我希望他们帮助他们在游乐场上待更长的时间。

题目描述

给定N个顶点的树。每个顶点都有一个从00N1N-1的不同整数。

它们要执行以下过程:

函数 init(N,E)init(N,E)

  • NN : 顶点数。顶点用从00N1N-1的不同整数编号。
  • EE : 表示树的边的信息的二维整数数组。且0i<N10\le i<N-1,边i连接两个不同的顶点E[i][0]E[i][0]E[i][1]E[i][1]EE表示该树结构。也就是说,一条边可以从任何一个顶点追踪到任何一个顶点,并且只有一条路线。

在第一次调用查询ii )之前,仅调用一次过程。这个过程没有返回值。

  • 具有以下参数的过程查询(ii ):

    • ii-要销毁的顶点数。
      此过程恰好称为N1N-1次。一次调用会破坏一个顶点(此破坏在之前的所有破坏之后)。已经销毁的顶点ii 将不再指定。销毁顶点ii 时,删除该顶点及其所有连接的边。每个调用必须返回销毁顶点后剩余的森林(一棵或多棵树的集合)的每棵树中最大的顶点数。返回所有现有树中拥有最大数量的顶点(无论何时拆分)。

输入格式

N1N-1

  • 11行:NN
  • 22NN行:0i<N10\le i<N-1,而第i+2i+2行有用空格分开的E[i][0]E[i][0]E[i][1]E[i][1]
  • N+1N+1行:N1N-1个整数I[0],I[1], ... ,I[N2]I[0],I[1],\ ...\ ,I[N-2]用空格隔开。其中I[i]I[i]是在第ii 个位置处破坏的节点的数量。

输出格式

11

  • N1N-1个整数X[0],X[1], ... ,X[N2]X[0],X[1],\ ...\ ,X[N-2]用空格分开输出。其中X[i]X[i]是第i次查询调用应返回的返回值。