Nộp bài | Các bài nộp | Làm tốt nhất | Về danh sách bài |
EARLYNET - Truyền tin sớm nhất |
Công ty X lên kế hoạch kết nối n máy tính đang hoạt động trong công ty. Các máy tính được đánh số từ 1 đến n. Theo kế hoạch Công ty lắp đặt m đường truyền tin một chiều để kết nối các máy tính. Các đường truyền tin được đánh số từ 1 tới m. Đường truyền tin thứ i cho phép truyền tin từ máy tính ui tới máy tính vi, i = 1,2, ...,m. Các đường truyền tin sẽ được lắp đặt lần lượt theo thứ tự từ 1 tới m. Việc lắp đặt một đường truyền tin mất đúng 1 đơn vị thời gian.
Ta nói máy tính s có thể truyền tin tới máy tính t nếu tồn tại một dãy các máy tính s = p1, p2, ..., pk = t sao cho có đường truyền tin từ máy tính pi tới máy tính pi+1, i = 1, 2, ...,k-1. Trong quá trình lắp đặt, đến một thời điểm nào đó máy tính s có thể truyền tin đến máy tính t theo những đường truyền tin đã được lắp đặt.
Yêu cầu: Giả sử việc lắp đặt các đường truyền tin được thực hiện liên tục bắt đầu từ thời điểm 0, hãy tính thời điểm sớm nhất mà máy tính s có thể truyền tin tới máy tính t.
Dữ liệu vào:
- Dòng thứ nhất chứa bốn số nguyên dương n, m s, t (2 ≤ n ≤ 300000; 1 ≤ m ≤ 500000, 1 ≤s, t ≤ n, s ≠ t);
- Dòng thứ i trong số m dòng tiếp theo chứa hai số nguyên dương ui, vi.
Hai số liên tiếp trên một dòng được ghi cách nhau ít nhất một dấu cách.
Dữ liệu ra: Ghi ra một số nguyên duy nhất là thời điểm sớm nhất mà máy tính s có thể truyền tin tới máy tính t. Trong trường hợp đã lắp đặt xong m đường truyền tin mà máy tính s vẫn không thể truyền tin tới máy tính t, ghi ra file kết quả một số -1.
Ví dụ:
Dữ liệu vào:
4 5 1 4
1 2
3 4
4 1
2 3
3 2
Dữ liệu ra:
4
Được gửi lên bởi: | noname00.pas |
Ngày: | 2017-11-13 |
Thời gian chạy: | 0.100s-0.200s |
Giới hạn mã nguồn: | 50000B |
Memory limit: | 1536MB |
Cluster: | Cube (Intel G860) |
Ngôn ngữ cho phép: | C-CLANG C CSHARP C++ 4.3.2 CPP CPP14 CPP14-CLANG C99 JAVA PAS-FPC PYTHON PYTHON3 |
Nguồn bài: | Bài tập thực hành CSL (Lào Cai chia sẻ) |