은하의 지루한 행성 쌍

주어진 순서로 간선을 하나씩 제거하면서 경로 xor이 0인 행성 쌍 개수를 구합니다.

보통7유니온 파인드해시맵아직 제출이 없습니다시간 제한1초메모리 제한64 MB

문제

아주 먼 옛날, 멀고 먼 은하에 행성 NN개가 있었다. 행성 사이에는 성간 항로 N1N-1개가 있었고, 이 항로만으로 모든 행성이 직접 또는 간접으로 이어져 있었다. 즉, 행성과 항로는 트리를 이룬다. 각 항로에는 그 항로의 호기심을 나타내는 정수가 하나씩 붙어 있다.

두 행성 AA, BB의 쌍이 다음 세 조건을 모두 만족하면 지루한 쌍이라고 한다.

  • AABB는 서로 다른 행성이다.
  • 항로를 하나 이상 지나 AA에서 BB로 갈 수 있다.
  • 그 경로에 있는 모든 항로의 호기심을 비트 단위 XOR한 값이 00이다.

(A,B)(A, B)와 쌍 (B,A)(B, A)는 같은 쌍으로 센다.

세월이 흘러 지금은 사악한 황제가 은하를 다스린다. 황제는 포스로 모든 항로를 정해진 순서대로 파괴하기로 했다. 파괴가 시작되기 전과 항로를 하나씩 파괴한 뒤마다 지루한 쌍이 몇 개인지 구하여라.

입력

첫째 줄에 행성의 수 NN이 주어진다. (1N1000001 \le N \le 100\,000)

다음 N1N-1개 줄에는 항로 하나를 나타내는 정수 AiA_i, BiB_i, ZiZ_i가 공백으로 구분되어 주어진다. 이는 행성 AiA_i와 행성 BiB_i가 호기심이 ZiZ_i인 항로로 직접 이어져 있다는 뜻이다. (1Ai,BiN1 \le A_i, B_i \le N, 0Zi10000000000 \le Z_i \le 1\,000\,000\,000)

마지막 줄에는 11부터 N1N-1까지의 순열이 주어진다. 이 순열의 ii번째 값이 jj이면 황제는 ii번째 단계에서 jj번째로 입력된 항로를 파괴한다. N=1N = 1이면 이 줄에는 아무 수도 주어지지 않는다.

출력

NN개 줄을 출력한다. kk번째 줄에는 항로를 정확히 k1k-1개 파괴한 뒤 남은 지루한 쌍의 개수를 출력한다.

힌트

첫 번째 예제에서는 파괴 전에 행성 11과 행성 22의 쌍이 지루한 쌍이다. 항로가 파괴된 뒤에는 두 행성을 잇는 경로가 없다.

두 번째 예제에서는 파괴 전에 쌍 (1,3)(1, 3)이 지루한 쌍이다. 첫 번째 파괴 뒤에도, 두 번째 파괴 뒤에도 행성 11과 행성 33 사이를 오갈 수 없고, 남은 어떤 쌍도 지루한 쌍이 아니다.

세 번째 예제에서는 모든 항로의 호기심이 00이므로, 경로가 남아 있는 모든 행성 쌍이 지루한 쌍이다.