# Bài tập 1 - Thuật toán Moore - Dijikstra (pi và p)
## 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. Cài đặt thuật toán Moore – Dijkstra để tìm (các) đường đi ngắn nhất từ đỉnh 1 đến các đỉnh còn lại. In các thông tin pi[u] và p[u] của các đỉnh ra màn hình.

Đầ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)
  - m 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).

Đầu ra (Output)
- In ra màn hình pi[u] và p[u] của các đỉnh theo mẫu:

```
pi[1] = 0, pi[1] = -1
pi[2] = 3, pi[2] = 1
...
```
## 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. Cài đặt thuật toán Moore – Dijkstra để tìm (các) đường đi ngắn nhất từ đỉnh 1 đến các đỉnh còn lại. In các thông tin pi[u] và p[u] của các đỉnh ra màn hình.

Đầ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)
  - m 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).

Đầu ra (Output)
- In ra màn hình pi[u] và p[u] của các đỉnh theo mẫu:

```
pi[1] = 0, pi[1] = -1
pi[2] = 3, pi[2] = 1
...
```
