Âm và Dương

Đề bài

Mô tả

Cho một cây gồm N đỉnh được đánh số từ 1 đến N, nối bởi N−1 cạnh. Mỗi cạnh có một loại: loại 0 hoặc loại 1.

Một đường đi cân bằng giữa hai đỉnh u và v (u≠v) là đường đi trên cây từ u đến v thỏa mãn:

  • Tổng số cạnh loại 0 bằng tổng số cạnh loại 1 trên toàn bộ đường đi.
  • Tồn tại một đỉnh r trên đường đi (r≠u, r≠v) sao cho đoạn từ u đến r cũng có số cạnh loại 0 bằng số cạnh loại 1.

Hãy đếm số lượng cặp đỉnh (u,v) không phân biệt thứ tự có đường đi cân bằng.

Dữ liệu vào

  • Dòng đầu tiên chứa số nguyên N.
  • N−1 dòng tiếp theo, mỗi dòng chứa ba số nguyên ai, bi, ti mô tả một cạnh nối đỉnh ai với đỉnh bi có loại ti (ti∈{0,1}).

Dữ liệu ra

  • In ra một số nguyên duy nhất: số cặp đỉnh có đường đi cân bằng.

Ràng buộc

  • 1≤N≤100000
  • 1≤ai,bi≤N
  • ti∈{0,1}
  • Đồ thị đầu vào là một cây.

Ví dụ

Input Output Giải thích
7
1 2 0
3 1 1
2 4 0
5 2 0
6 3 1
5 7 1
1 Chỉ có cặp (3,7) thỏa mãn. Đường đi 3→1→2→5→7 có 2 cạnh loại 0 và 2 cạnh loại 1 (cân bằng). Đỉnh nghỉ r=2: đoạn 3→1→2 có 1 cạnh loại 0 và 1 cạnh loại 1 (cân bằng).
7
1 2 0
2 3 1
3 4 0
4 5 1
1 6 0
6 7 1
3 Ba cặp hợp lệ: (1,5), (3,7), (5,7). Ví dụ cặp (1,5): đường đi 1→2→3→4→5 có 2 cạnh loại 0 và 2 cạnh loại 1. Đỉnh nghỉ r=3: đoạn 1→2→3 có 1 cạnh mỗi loại.

Bình luận

Không có bình luận tại thời điểm này.

gnatmake 12.2.0 a68g 3.1.2 nasm 2.16.1 as_x64 2.47 awk 1.3.4 gcc 16.2.0 dotnet 10.0.402 g++ 16.2.0 g++-themis 16.2.0 g++17 16.2.0 g++20 16.2.0 g++23 16.2.0 clang++ 22.1.8 dmd 2.113.0 dart 3.13.6 gforth 0.7.3 gfortran 15.3.0 go 1.27.3 groovyc 5.1.3 javac 26.0.2.1 node 26.12.1 julia 1.13.2 kotlinc 2.4.21 lean 4.35.0 sbcl 2.2.9 lua 5.5.1 nim 2.2.12 fpc 3.2.2 fpc-themis 3.2.2 perl 5.42.3 php 8.5.12 pike 8.0 swipl 9.0.4 pypy3 7.3.23 python3 3.15.1 racket 8.7 ruby 4.0.8 rustc 1.99.1 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 swiftc 6.4.1 tclsh 8.6 bun 1.4.4 deno 2.9.8 v 0.5.2 zig 0.17.0