[ITK22 Training] Duyệt Thảo My

Xem PDF

Nộp bài


Điểm: 15 (thành phần)
Thời gian: 1.0s
Bộ nhớ: 512M

Tác giả:
Dạng bài

Cho đồ thị có hướng gồm \(N\) đỉnh và \(M\) cạnh. Bạn hãy tìm cách vẽ thêm ít cạnh có hướng nhất có thể để trạng thái sau cùng của đồ thị thỏa mãn điều kiện: với mọi bộ ba đỉnh \((a,b,c)\), nếu tồn tại cạnh nối trực tiếp \(a\) tới \(b\) và tồn tại cạnh nối trực tiếp \(b\) tới \(c\) thì cũng tồn tại cạnh nối trực tiếp \(a\) tới \(c\).


Input

Dòng đầu chứa hai số nguyên \(N\) và \(M\). (\(3\leq N\leq 2000\), \(0\leq M\leq 2000\))

Dòng thứ \(i\) trong \(M\) dòng tiếp theo chứa hai số nguyên \(u_i\) và \(v_i\) (\(1\leq u_i, v_i\leq N\)), thể hiện một cạnh có hướng nối trực tiếp đỉnh \(u_i\) đến đỉnh \(v_i\).

Dữ liệu đảm bảo \(u_i\ne u_j\) hoặc \(v_i\ne v_j\) với mọi \(i\ne j\).


Output

In ra một số nguyên là số lượng tối thiểu cạnh có hướng cần vẽ thêm để đồ thị đáp ứng điều kiện trên đề bài.


Ví dụ

Sample input 1
4 3
1 4
3 2
4 3
Sample output 1
3
Giải thích

Trạng thái ban đầu của đồ thị:

Trạng thái ban đầu của đồ thị

Một phương án thỏa mãn là vẽ thêm \(3\) cạnh \((1, 3)\), \((1, 2)\) và \((4, 2)\).

Sample input 2
5 8
2 1
1 2
2 3
3 2
2 4
4 2
2 5
5 2
Sample output 2
12