#793. Các đường đi phân tách (RPATHS)

Bộ nhớ: 512 MiB Thời gian: 1000 ms Nhập/xuất từ luồng chuẩn
Kiểu bài: Thông thường Kiểu chấm: So sánh văn bản
Đưa lên bởi: Trùm CUỐI

Đề bài

Để đi từ một trong F đồng cỏ sang một đồng cỏ khác, Bessie và các bạn của cô buộc phải đi qua những cái cây đáng sợ mà họ ghét. Những con bò đã chán ngấy việc bị bắt buộc phải đi một con đường nhất định, vì vậy họ muốn xây dựng thêm một số con đường mới sao cho giữa mỗi cặp đồng cỏ đều có ít nhất hai đường đi phân tách nhau, như vậy họ sẽ có nhiều lựa chọn hơn.

Giữa mỗi cặp đồng cỏ hiện đã có ít nhất một đường đi. Cho mô tả của tất cả R con đường hai chiều, mỗi con đường nối hai đồng cỏ khác nhau, hãy tính số lượng con đường mới ít nhất cần xây dựng.

Một đường đi được tạo thành từ nhiều đoạn đường nối tiếp nhau. Hai đường đi được gọi là phân tách nhau (separated) nếu chúng không có đoạn đường nào trùng nhau (không chung cạnh), nhưng có thể đi qua cùng một số đồng cỏ (chung đỉnh).

Giữa cùng một cặp đồng cỏ có thể đã có hai con đường khác nhau, bạn cũng có thể xây thêm một con đường nữa giữa chúng để tạo thành một con đường khác biệt.

Dữ liệu:

  • Dòng đầu tiên nhập hai số nguyên F R .
  • R dòng tiếp theo, mỗi dòng nhập hai số nguyên, biểu thị hai đồng cỏ có một con đường nối giữa chúng.

Kết quả:

  • Xuất số lượng con đường mới ít nhất cần xây dựng.

Ví dụ:

Dữ liệu:

7 7
1 2
2 3
3 4
2 5
4 5
5 6
5 7

Kết quả:

2

Hình minh họa

Giới hạn: 1 \le F \le 5000, F-1 \le R \le 10000 .