QOJ.ac

QOJ

Time Limit: 2 s Memory Limit: 512 MB Total points: 100

#7706. 六花与链接器

Statistics

如果你曾经在命令行下编译过 C++ 项目,你一定对链接器很熟悉。如果你想使用两个静态库 liba.alibb.a,且 liba.a 依赖于 libb.a,你需要在命令中把 liba.a 放在 libb.a 之前,例如:“g++ -o my my.cpp liba.a libb.a”。

如果 liba.alibb.a 互相依赖呢?你需要多次在命令中添加它们的名字,例如:“g++ -o my my.cpp liba.a libb.a liba.a”。形式化地说,如果你想使用两个库 liba.alibb.a,且 liba.a 依赖于 libb.a,那么在你的命令中,必须至少有一个 liba.a 出现在某个 libb.a 之前。

现在,Rikka 正在进行她的 C++ 项目,她将使用 $n$ 个静态库。已知有 $m$ 对依赖关系。一对 $(i, j)$ 表示第 $i$ 个库依赖于第 $j$ 个库。

你知道,复杂的命令永远不会带来快乐。因此,Rikka 想要简化编译命令。具体来说,Rikka 想要使编译命令中静态库名字的总数尽可能小。请帮她找到这个数字。

输入格式

第一行包含一个整数 $t$ ($1 \le t \le 10^3$),表示测试用例的数量。

每个测试用例的第一行包含两个整数 $n$ 和 $m$ ($1 \le n \le 18, 0 \le m \le n \cdot (n - 1)$)。

接下来 $m$ 行,每行包含两个整数 $a$ 和 $b$ ($1 \le a, b \le n, a \neq b$),描述一个依赖关系:库 $a$ 依赖于库 $b$。

保证每个依赖关系最多出现一次,且 $n > 12$ 的测试用例不超过 20 个。

输出格式

对于每个测试用例,输出一行,包含一个整数:Rikka 的编译命令中库名字的最少数量。

样例

输入 1

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

输出 1

3
4
6

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.