
# Bài tập 10. Kiểm tra đồ thị chứa chu trình
## Câu 1
Viết chương trình đọc vào một đơn đồ thị có hướng và kiểm tra xem nó có chứa chu trình hay không.

Nhắc lại: Chu trình là một đường đi có đỉnh đầu trùng với đỉnh cuối.

Đầ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, tương ứng là số đỉnh và số cung.
  - m dòng tiếp theo mỗi dòng chứa 2 số nguyên u, v mô tả cung (u, v).

Đầu ra (Output):
- In ra màn hình CIRCLED nếu đồ thị có chứa chu trình, ngược lại in ra NO CIRCLE

## Câu 2
Viết chương trình đọc vào một đơn đồ thị có hướng và kiểm tra xem nó có chứa chu trình hay không. Nếu đồ thị có chu trình, in ra các đỉnh có trong chu trì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, tương ứng là số đỉnh và số cung.
  - m dòng tiếp theo mỗi dòng chứa 2 số nguyên u, v mô tả cung (u, v).

Đầu ra (Output):
- Nếu đồ thị có chu trình, in ra các đỉnh có trong chu trình trên cùng 1 dòng, cách nhau 1 khoảng trắng. Đỉnh đầu và đỉnh cuối của chu trình giống nhau.
- Nếu đồ thị không chứa chu trình, in ra -1
- Nếu đồ thị có nhiều chu trình, chỉ cần in ra 1 chu trình bất kỳ.

## Câu 3
Viết chương trình đọc vào một đơn đồ thị vô hướng và kiểm tra xem nó có chứa chu trình hay không.

Nhắc lại: Chu trình là một đường đi có đỉnh đầu trùng với đỉnh cuối.

Đầ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, tương ứng là số đỉnh và số cung.
  - m dòng tiếp theo mỗi dòng chứa 2 số nguyên u, v mô tả cung (u, v).

Đầu ra (Output):
- In ra màn hình CIRCLED nếu đồ thị có chứa chu trình, ngược lại in ra NO CIRCLE

## Câu 4
Viết chương trình đọc vào một đơn đồ thị vô hướng và kiểm tra xem nó có chứa chu trình hay không. Nếu đồ thị có chu trình, in ra các đỉnh có trong chu trì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, tương ứng là số đỉnh và số cung.
  - m dòng tiếp theo mỗi dòng chứa 2 số nguyên u, v mô tả cung (u, v).

Đầu ra (Output):
- Nếu đồ thị có chu trình, in ra các đỉnh có trong chu trình trên cùng 1 dòng, cách nhau 1 khoảng trắng. Đỉnh đầu và đỉnh cuối của chu trình giống nhau.
- Nếu đồ thị không chứa chu trình, in ra -1
- Nếu đồ thị có nhiều chu trình, chỉ cần in ra 1 chu trình bất kỳ.
