Các lượt nộp
    Danh sách bài
    Trang chủ
    Báo lỗi

    solution

    Đề bài: [Giải thuật] Khoảng cách giữa hai đỉnh trên cây

    Cho cây gồm nnn đỉnh, mỗi cạnh có trọng số dương. Với mỗi truy vấn (u,v)(u, v)(u,v), hãy tính khoảng cách giữa uuu và vvv — tổng trọng số các cạnh trên đường đi duy nhất nối chúng.

    Sử dụng nhảy nhị phân (binary lifting) để tìm tổ tiên chung gần nhất (LCA), từ đó tính khoảng cách bằng công thức dist(u,v)=D(u)+D(v)−2 D(lca(u,v))dist(u,v) = D(u) + D(v) - 2\,D(\mathrm{lca}(u,v))dist(u,v)=D(u)+D(v)−2D(lca(u,v)), với D(x)D(x)D(x) là khoảng cách từ gốc tới xxx.

    • Định dạng đầu vào:

      Dòng đầu chứa nnn và qqq. n−1n-1n−1 dòng tiếp theo, mỗi dòng ba số u v wu\ v\ wu v w (cạnh uuu–vvv trọng số www). qqq dòng cuối, mỗi dòng hai số u vu\ vu v.

    • Ràng buộc đầu vào:

      1≤n,q≤2⋅1051 \le n, q \le 2\cdot10^51≤n,q≤2⋅105, 1≤w≤1091 \le w \le 10^91≤w≤109. Gốc cây là đỉnh 111.

    • Định dạng đầu ra:

      Với mỗi truy vấn, in khoảng cách trên một dòng.

    Ví dụ:

    Đầu vào:

    4 2
    1 2 3
    1 3 5
    3 4 2
    2 4
    2 3
    

    Đầu ra:

    10
    8

    Giải thích:

    Đường đi 2 tới 4 là 2-1-3-4 với tổng trọng số 3+5+2=10. Đường đi 2 tới 3 là 2-1-3 với tổng 3+5=8.

    Đang tải editor...