trang chủ / đề bài / thhv19_cntt_11_c

Đường đi dài nhất

Đề bài

Mô tả

Cho đồ thị có hướng không có chu trình (DAG). Mỗi cạnh của đồ thị được gán trọng số là một số nguyên. Hãy đếm số lượng đường đi từ đỉnh s đến đỉnh t. Trong các đường đi đó, đường đi dài nhất có giá trị bằng bao nhiêu.

Độ dài của một đường đi là tổng trọng số các cung trên đường đi đó (có thể âm). Hai đường đi được coi là khác nhau nếu dãy cung của chúng khác nhau.

Yêu cầu: Tính số lượng đường đi từ s đến t (theo modulo 109+7) và tìm độ dài đường đi dài nhất từ s đến t.

Dữ liệu vào

  • Dòng đầu tiên ghi hai số nguyên dương n,m (1≤n≤3×105, 1≤m≤5×105) lần lượt là số đỉnh và số cạnh của đồ thị. Các đỉnh đánh số từ 1 đến n.
  • Dòng thứ hai ghi hai số nguyên dương s,t (1≤s,t≤n, s≠t).
  • m dòng tiếp theo, mỗi dòng ghi 3 số nguyên a,b,c (1≤a,b≤n, a≠b, |c|≤103) thể hiện có một cung một chiều nối từ đỉnh a đến đỉnh b có trọng số là c.

Dữ liệu đảm bảo rằng đồ thị không có chu trình và không có hai cung nào cùng nối từ a đến b.

Dữ liệu ra

  • Dòng thứ nhất ghi số lượng đường đi khác nhau có thể có từ s đến t. Vì con số này có thể rất lớn nên chỉ cần lấy phần dư của nó khi chia cho 109+7 (phần dư này có thể bằng 0 dù đường đi vẫn tồn tại).
  • Dòng thứ hai ghi độ dài của đường đi dài nhất từ s đến t.

Nếu không tồn tại đường đi nào từ s đến t thì chỉ ghi một dòng NO PATH.

Ràng buộc

  • 1≤n≤3×105, 1≤m≤5×105.
  • 1≤s,t≤n, s≠t.
  • 1≤a,b≤n, a≠b, |c|≤103.
  • Đồ thị không có chu trình, không có hai cung trùng nhau.

Subtasks

  • Subtask 1 (30% số điểm): n,m≤10.
  • Subtask 2 (30% số điểm): n,m≤100.
  • Subtask 3 (40% số điểm): không có ràng buộc gì thêm.

Ví dụ

Input Output Giải thích
5 6
1 5
1 4 5
4 5 -4
1 2 1
2 3 2
3 5 3
1 3 -7
3
6
Có 3 đường đi: 1→4→5 (độ dài 1), 1→2→3→5 (độ dài 6), 1→3→5 (độ dài −4). Dài nhất là 6.
3 2
1 3
3 1 4
2 3 1
NO PATH Ví dụ bổ sung (không có trong đề gốc). Không có cung nào đi ra từ đỉnh 1.
4 4
1 4
1 2 -5
2 4 -1
3 2 10
1 4 -7
2
-6
Ví dụ bổ sung (không có trong đề gốc). Hai đường đi 1→2→4 (độ dài −6) và 1→4 (độ dài −7). Đường đi 3→2→4 không xuất phát từ s=1 nên không được tính, và đáp án có thể âm.

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