Lexicographically Smallest Path

Đề bài

Mô tả

Bessie làm việc với đồ thị vô hướng gồm N đỉnh và M cạnh. Mỗi cạnh được gán một ký tự viết thường từ 'a' đến 'z'. Đồ thị liên thông và có thể có cạnh lặp hoặc đa cạnh.

Định nghĩa f(a,b) là chuỗi nhỏ nhất theo thứ tự từ điển khi nối các ký tự trên cạnh dọc theo tất cả các đường đi từ đỉnh a đến đỉnh b.

Với mỗi đỉnh i (1iN), hãy xác định độ dài của f(1,i). In 1 nếu độ dài là vô hạn.

Dữ liệu vào

  • Dòng đầu tiên chứa số nguyên T (1T10) - số test case.
  • Với mỗi test case:
    • Dòng 1: Hai số nguyên NM (1N2×105, N1M2×105).
    • M dòng tiếp theo: Mỗi dòng chứa hai số nguyên u,v và một ký tự c viết thường - biểu thị cạnh nối uv với nhãn c.

Tổng NM trên tất cả test case không vượt quá 4×105.

Dữ liệu ra

Với mỗi test case, in N số nguyên cách nhau bởi dấu cách, số thứ i là độ dài f(1,i) hoặc 1 nếu vô hạn.

Ràng buộc

  • 1T10
  • 1N2×105
  • N1M2×105
  • Tổng N,M4×105

Ví dụ

Input Output Giải thích
2
1 0
2 2
1 1 a
2 1 b
0
0 -1
Test case 1: chỉ 1 đỉnh, f(1,1) = chuỗi rỗng, dài 0. Test case 2: đỉnh 1 có self-loop 'a', cạnh 1-2 nhãn 'b'. f(1,2): đi qua self-loop bao nhiêu lần cũng được thêm 'a' trước 'b', nên chuỗi nhỏ nhất dài vô hạn.
2
7 7
1 2 a
1 3 a
2 4 b
3 5 a
5 6 a
6 7 a
7 4 a
4 3
1 2 z
2 3 x
3 4 y
0 1 1 5 2 3 4
0 1 2 -1
Test case 1: f(1,4) = "aaaaa" (dài 5), đi 1->3->5->6->7->4.

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.46 awk 1.3.4 gcc 16.1.0 csc 6.12.0.200 g++ 16.1.0 g++-themis 16.1.0 g++17 16.1.0 g++20 16.1.0 g++23 16.1.0 clang++ 22.1.6 dmd 2.112.0 dart 3.12.1 gforth 0.7.3 gfortran 12.2.0 go 1.26.3 groovyc 5.0.6 javac 25.0.3 node 26.2.0 kotlinc 2.3.21 sbcl 2.2.9 lua 5.4.8 nim 2.2.10 fpc 3.2.2 fpc-themis 3.2.2 perl 5.36.0 php 8.5.6 pike 8.0 pypy3 7.3.23 python3 3.14.5 racket 8.7 ruby 4.0.5 rustc 1.96.0 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 tclsh 8.6 bun 1.3.14 deno 2.8.1 v 0.5.1 zig 0.16.0