CF176E.Archaeology

普及/提高-

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

This time you should help a team of researchers on an island in the Pacific Ocean. They research the culture of the ancient tribes that used to inhabit the island many years ago.

Overall they've dug out nn villages. Some pairs of villages were connected by roads. People could go on the roads in both directions. Overall there were exactly n1n-1 roads, and from any village one could get to any other one.

The tribes were not peaceful and they had many wars. As a result of the wars, some villages were destroyed completely. During more peaceful years some of the villages were restored.

At each moment of time people used only those roads that belonged to some shortest way between two villages that existed at the given moment. In other words, people used the minimum subset of roads in such a way, that it was possible to get from any existing village to any other existing one. Note that throughout the island's whole history, there existed exactly n1n-1 roads that have been found by the researchers. There never were any other roads.

The researchers think that observing the total sum of used roads’ lengths at different moments of time can help to better understand the tribes' culture and answer several historical questions.

You will be given the full history of the tribes' existence. Your task is to determine the total length of used roads at some moments of time.

输入格式

The first line contains an integer nn ( 1<=n<=1051<=n<=10^{5} ) — the number of villages. The next n1n-1 lines describe the roads. The ii -th of these lines contains three integers aia_{i} , bib_{i} and cic_{i} ( 1<=ai,bi<=n1<=a_{i},b_{i}<=n , aibia_{i}≠b_{i} , 1<=ci<=1091<=c_{i}<=10^{9} , 1<=i<n ) — the numbers of villages that are connected by the ii -th road and the road's length. The numbers in the lines are separated by a space.

The next line contains an integer qq ( 1<=q<=1051<=q<=10^{5} ) — the number of queries. Then follow qq queries, one per line, ordered by time. Each query belongs to one of three types:

  • "+ xx " — village number xx is restored ( 1<=x<=n1<=x<=n ).
  • "- xx " — village number xx is destroyed ( 1<=x<=n1<=x<=n ).
  • "?" — the archaeologists want to know the total length of the roads which were used for that time period.

It is guaranteed that the queries do not contradict each other, that is, there won't be queries to destroy non-existing villages or restore the already existing ones. It is guaranteed that we have at least one query of type "?". It is also guaranteed that one can get from any village to any other one by the given roads.

At the initial moment of time no village is considered to exist.

输出格式

For each query of type "?" print the total length of used roads on a single line. You should print the answers to the queries in the order, in which they are given in the input.

Please do not use the %lld specifier to read or write 64-bit integers in С++. It is preferred to use cin, cout streams or the %I64d specifier.

输入输出样例

  • 输入#1

    6
    1 2 1
    1 3 5
    4 1 7
    4 5 3
    6 4 2
    10
    + 3
    + 1
    ?
    + 6
    ?
    + 5
    ?
    - 6
    - 3
    ?
    

    输出#1

    5
    14
    17
    10
    
首页