P24475 [AtCoder] Transitivity
普及+
题目描述

Problem Statement

You are given a simple directed graph with N vertices numbered 1 to N and M edges numbered 1 to M. Edge i is a directed edge from vertex u_i to vertex v_i.
You may perform the following operation zero or more times.

  • Choose distinct vertices x and y such that there is no directed edge from vertex x to vertex y, and add a directed edge from vertex x to vertex y.

Find the minimum number of times you need to perform the operation to make the graph satisfy the following condition.

  • For every triple of distinct vertices a, b, and c, if there are directed edges from vertex a to vertex b and from vertex b to vertex c, there is also a directed edge from vertex a to vertex c.

Input

The input is given from Standard Input in the following format:
N M
u_1 v_1
$\vdots$
u_M v_M

Output

Print the answer.

Constraints

  • $3 \leq N \leq 2000$
  • $0 \leq M \leq 2000$
  • $1 \leq u_i ,v_i \leq N$
  • $u_i \neq v_i$
  • $(u_i,v_i) \neq (u_j,v_j)$ if $i \neq j$.
  • All values in the input are integers.

Sample Input 1

4 3
2 4
3 1
4 3

Sample Output 1

3

Initially, the condition is not satisfied because, for instance, for vertices 2, 4, and 3, there are directed edges from vertex 2 to vertex 4 and from vertex 4 to vertex 3, but not from vertex 2 to vertex 3.
You can make the graph satisfy the condition by adding the following three directed edges:

  • one from vertex 2 to vertex 3,
  • one from vertex 2 to vertex 1, and
  • one from vertex 4 to vertex 1.

On the other hand, the condition cannot be satisfied by adding two or fewer edges, so the answer is 3.

Sample Input 2

292 0

Sample Output 2

0

Sample Input 3

5 8
1 2
2 1
1 3
3 1
1 4
4 1
1 5
5 1

Sample Output 3

12

输入格式

见题面 Input 部分

输出格式

见题面 Output 部分

样例输入
4 3 2 4 3 1 4 3
样例输出
3