Cho đồ thị có \(n\) đỉnh và \(m\) cạnh, các đỉnh được đánh số từ 1 đến \(n\). Trên mỗi cạnh được gán một số nguyên không âm là trọng số của cạnh đó. Trọng số của một đường đi được tính bằng phép toán or (ký hiệu: or trong pascal, | trong C++), Nói cách khác, một đường đi qua các cạnh có trọng số lần lượt là \(m_{1},m_{2},\ldots,m_{k}\) thì trọng số của đường đi này là \(m_{1}\ or\ m_{2}\ or\ldots m_{k}\)
Cho đồ thị và 2 đỉnh \(s,\ t\), hãy tìm đường đi có trọng số nhỏ nhất từ \(s\) đến \(t\), nếu không tìm được đường đi thì in -1.
Dữ liệu vào:
+ Dòng đầu tiên ghi 2 số nguyên \(n,\ m\)
+ \(m\) dòng tiếp theo, mỗi dòng ghi 3 số nguyên \(u,\ v,\ c\ (1 \leq u,v \leq n)\) cho biết \(c\) là trọng số của cạnh \(u,\ v\)
+ Dòng cuối cùng ghi 2 số nguyên \(s,\ t\ (1 \leq s,t \leq n;s eq t)\)
Kết quả: Một số nguyên duy nhất là kết quả bài toán.
Ví dụ:
Input | output |
---|---|
3 4 1 2 1 1 2 1000 2 3 3 1 3 100 1 3 | 3 |
Giới hạn:
+ \(1 \leq n \leq 1000\)
+ \(1 \leq m \leq 10000\)
+ \(1 \leq c < 1024\)
Code tích cực |
---|
Trong 24h |
Trong 7 ngày |
|
Trong 30 ngày |
|
Thống kê |
---|
AC/Sub: 97887/180710 Pascal: 17121 C++: 130348 Python: 33199 Lượt xem/tải tests: 38905 |