# Bài tập 3 - Thuật toán Moore - Dijkstra (đường đi)
## Câu 1
Viết chương trình đọc một **đơn đồ thị có hướng, có trọng số không âm** từ bàn phím, tìm đường đi ngắn nhất từ đỉnh s đến đỉnh t (s và t cũng được đọc từ bàn phím).

Đầu vào (Input)
- Dữ liệu đầu vào được nhập từ bàn phím với định dạng:
  - Dòng đầu tiên chứa 2 số nguyên n và m (1≤n<100;0≤m<500)
  - dòng tiếp theo mỗi dòng chứa 3 số nguyên u, v, w mô tả cung (u, v) có trọng số w (0≤w≤100).
- Dòng cuối cùng chứa 2 số nguyên s và t.

Đầu ra (Output)
- In đường đi ngắn nhất từ s đến t theo mẫu:

```
s -> u1 -> u2 -> ... -> t
```
## Câu 2
Viết chương trình đọc một **đơn đồ thị vô hướng, có trọng số không âm** từ bàn phím, tìm đường đi ngắn nhất từ đỉnh s đến đỉnh t (s và t cũng được đọc từ bàn phím).

Đầu vào (Input)
- Dữ liệu đầu vào được nhập từ bàn phím với định dạng:
  - Dòng đầu tiên chứa 2 số nguyên n và m (1≤n<100;0≤m<500)
  - dòng tiếp theo mỗi dòng chứa 3 số nguyên u, v, w mô tả cung (u, v) có trọng số w (0≤w≤100).
- Dòng cuối cùng chứa 2 số nguyên s và t.

Đầu ra (Output)
- In đường đi ngắn nhất từ s đến t theo mẫu:

```
s -> u1 -> u2 -> ... -> t
```
