Truy tìm cổ vật
Đề bài
Mô tả
Có hòn đảo được nối với nhau bởi cây cầu, sao cho từ một đảo bất kỳ luôn có thể đi tới mọi đảo khác. Trên một số cây cầu có đặt cổ vật.
Johnny đang ở đảo , còn người mua cổ vật ở đảo (hai đảo này có thể trùng nhau). Johnny muốn đi lấy được ít nhất một cổ vật rồi tới chỗ người mua để bán.
Khó khăn là mỗi cây cầu sẽ sập ngay sau khi Johnny đi qua nó, nên mỗi cây cầu chỉ có thể được đi qua nhiều nhất một lần. Johnny không thể bơi, bay hay dịch chuyển tức thời, và cũng không thể đi nửa cây cầu rồi quay lại đảo cũ — muốn lấy cổ vật trên một cây cầu thì phải đi hết cây cầu đó.
Hãy xác định Johnny có thể lấy được một cổ vật rồi tới được đảo hay không.
Dữ liệu vào
- Dòng đầu chứa hai số nguyên và — số đảo và số cầu.
- dòng tiếp theo, mỗi dòng chứa ba số nguyên , , : cây cầu thứ nối đảo với đảo ; nếu trên cầu có cổ vật, nếu không.
- Dòng cuối chứa hai số nguyên và — đảo của Johnny và đảo của người mua.
Dữ liệu ra
In ra "YES" nếu Johnny có thể lấy được một cổ vật và tới đảo , ngược lại in ra "NO".
Ràng buộc
- , ,
- Giữa hai đảo bất kỳ có không quá một cây cầu.
- Đồ thị liên thông (luôn đi được giữa mọi cặp đảo).
Ví dụ
| Input | Output | Giải thích |
|---|---|---|
| 6 7 1 2 0 2 3 0 3 1 0 3 4 1 4 5 0 5 6 0 6 4 0 1 6 |
YES | Để tới , Johnny bắt buộc phải đi qua cầu – (có cổ vật), nên lấy được cổ vật. |
| 5 4 1 2 0 2 3 0 3 4 0 2 5 1 1 4 |
NO | Cầu duy nhất có cổ vật là –. Để lấy nó rồi tới , Johnny phải đi , nhưng cầu – chỉ đi được một lần. Không có cách nào vừa lấy cổ vật vừa tới . |
| 5 6 1 2 0 2 3 0 3 1 0 3 4 0 4 5 1 5 3 0 1 2 |
YES | Từ có thể đi , qua cầu – lấy cổ vật rồi về . |
Bình luận