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

Hai tuyến đường

Đề bài

Mô tả

Cho n thành phố (đánh số từ 1 đến n) và m tuyến đường sắt hai chiều. Mạng đường bộ được định nghĩa rất đơn giản: với mỗi cặp thành phố khác nhau xy, tồn tại một con đường hai chiều giữa xy khi và chỉ khi giữa xy không có đường sắt.

Một con tàu và một chiếc xe buýt cùng xuất phát từ thành phố 1 tại cùng một thời điểm. Cả hai đều có đích đến là thành phố n. Mỗi lần di chuyển từ một thành phố sang một thành phố lân cận (theo đúng một đường sắt hoặc một con đường) đều mất chính xác 1 giờ. Tàu chỉ được đi trên đường sắt, xe buýt chỉ được đi trên đường bộ. Mỗi phương tiện có thể đi qua một cạnh nhiều lần.

Để tránh va chạm tại các điểm giao đường sắt, tàu và xe buýt không được có mặt ở cùng một thành phố nào (ngoại trừ thành phố n) cùng một lúc.

Hãy xác định khoảng thời gian nhỏ nhất sao cho cả hai phương tiện đều đã đến thành phố n, nghĩa là giá trị lớn nhất giữa thời điểm tàu đến và thời điểm xe buýt đến. Hai phương tiện được phép đến đích cùng lúc. Nếu có ít nhất một phương tiện không thể đến được thành phố n, hãy in ra 1.

Dữ liệu vào

  • Dòng đầu chứa hai số nguyên nm — số thành phố và số đường sắt.
  • m dòng tiếp theo, mỗi dòng chứa hai số nguyên uv (1u,vn, uv) cho biết có một đường sắt nối hai thành phố uv. Đảm bảo giữa mỗi cặp thành phố có nhiều nhất một đường sắt.

Dữ liệu ra

In ra một số nguyên — khoảng thời gian nhỏ nhất theo yêu cầu, hoặc 1 nếu không khả thi.

Ràng buộc

  • 2n400
  • 0mn(n1)2

Ví dụ

Input Output Giải thích
4 2
1 3
3 4
2 Tàu đi 134 trong 2 giờ; xe buýt đi 124 (cả hai cạnh đều thuộc đường bộ vì không có đường sắt tương ứng) trong 2 giờ. Hai phương tiện cùng đến thành phố 4 — được phép.
4 6
1 2
1 3
1 4
2 3
2 4
3 4
-1 Mạng đường sắt là đồ thị đầy đủ nên không tồn tại con đường bộ nào, xe buýt không thể đến đích.
5 5
4 2
3 5
4 5
5 1
1 2
3 Tàu có cạnh trực tiếp 15 nên đến đích trong 1 giờ. Xe buýt phải đi đường bộ dài 3 cạnh, ví dụ 1325.

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