trang chủ / bài tập / presroad

Tổng thống và những con đường

Đề bài

Mô tả

n thành phố, thủ đô nằm ở thành phố s và quê hương của tổng thống nằm ở thành phố t (st). Các thành phố được nối bởi các con đường một chiều, mỗi con đường có thời gian di chuyển là một số nguyên dương.

Mỗi năm tổng thống về thăm quê t, đoàn xe đi theo một đường đi từ s đến t sao cho tổng thời gian di chuyển là nhỏ nhất (nếu có nhiều đường đi ngắn nhất, không thể biết trước tổng thống sẽ chọn đường nào).

Với mỗi con đường, bộ Giao thông muốn biết:

  • Nếu tổng thống chắc chắn đi qua con đường đó trong mọi hành trình ngắn nhất — nghĩa là con đường đó thuộc tất cả các đường đi ngắn nhất từ s đến t — thì in ra YES.
  • Ngược lại, nếu có thể sửa con đường đó (giảm thời gian di chuyển của nó xuống một số nguyên dương mới, không nhỏ hơn 1) để sau khi sửa, con đường đó chắc chắn nằm trên đường đi ngắn nhất duy nhất từ s đến t, thì in ra CAN kèm chi phí sửa nhỏ nhất. Chi phí sửa là hiệu giữa thời gian di chuyển cũ và mới của con đường.
  • Nếu không thể làm cho con đường đó chắc chắn được đi qua bằng cách sửa như trên, thì in ra NO.

Lưu ý: chỉ được giảm thời gian của con đường (thời gian mới phải là số nguyên 1), và chỉ sửa đúng một con đường đang xét.

Dữ liệu vào

  • Dòng đầu chứa bốn số nguyên n, m, s, t — số thành phố, số con đường, số hiệu thủ đô và số hiệu quê hương.
  • m dòng tiếp theo, dòng thứ i chứa ba số nguyên ai, bi, li — con đường một chiều thứ i đi từ ai đến bi với thời gian di chuyển li.

Các thành phố được đánh số từ 1 đến n. Giữa hai thành phố có thể có nhiều con đường. Đảm bảo tồn tại đường đi từ s đến t.

Dữ liệu ra

In ra m dòng, dòng thứ i chứa thông tin về con đường thứ i (theo thứ tự xuất hiện trong dữ liệu vào): YES, hoặc CAN kèm chi phí sửa nhỏ nhất, hoặc NO.

Ràng buộc

  • 2n105
  • 1m105
  • 1s,tn, st
  • 1ai,bin, aibi
  • 1li106

Ví dụ

Input Output Giải thích
6 7 1 6
1 2 2
1 3 10
2 3 7
2 4 8
3 5 3
4 5 2
5 6 1
YES
CAN 2
CAN 1
CAN 1
CAN 1
CAN 1
YES
Có hai đường đi ngắn nhất độ dài 8: 1245612356. Con đường 1256 nằm trên mọi đường ngắn nhất nên là YES. Các con đường còn lại có thể được sửa để trở thành đường ngắn nhất duy nhất.
3 3 1 3
1 2 10
2 3 10
1 3 100
YES
YES
CAN 81
Đường ngắn nhất duy nhất là 123 độ dài 20, nên hai cạnh đầu là YES. Cạnh 13 dài 100; để nó là đường ngắn nhất duy nhất cần độ dài 19, tức giảm ít nhất 81.
2 2 1 2
1 2 1
1 2 2
YES
NO
Đường ngắn nhất duy nhất là cạnh đầu (độ dài 1). Cạnh thứ hai dài 2; muốn nó chắc chắn được đi qua cần độ dài 0, không hợp lệ, nên NO.

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 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