「MCOI-08」Fast Enumeration
题目描述
Technoblade 将 Skyblock 抽象为一张 $n$($n\le 50$)节点 $m$ 条边的简单有向图。他需要求出该图 **所有** 哈密尔顿回路,即所有排列 $p_1,p_2,\dots,p_n$ 使得 $p_1=1$ 并且 $p_1\to p_2\to \dots\to p_{n-1}\to p_n\to p_1$ 为一个合法路径。
**数据保证哈密尔顿回路数量非零并小于 $10^4$**。
**数据从所有合法数据随机采样。**
输入输出格式
输入格式
第一行两个正整数 $n,m$。
接下来 $m$ 行,每行两个正整数 $u,v$。
输出格式
输出若干行;每行输出 $n$ 个正整数,为一个哈密尔顿回路。按照递增字典序输出。
输入输出样例
输入样例 #1
3 3
1 2
2 3
3 1
输出样例 #1
1 2 3
输入样例 #2
4 6
1 3
1 4
2 1
2 3
3 4
4 2
输出样例 #2
1 3 4 2
输入样例 #3
5 8
1 2
2 3
3 4
4 1
2 5
4 5
5 1
5 3
输出样例 #3
1 2 3 4 5
1 2 5 3 4
输入样例 #4
5 10
1 2
1 3
2 3
2 4
3 4
3 5
4 1
4 5
5 1
5 2
输出样例 #4
1 2 3 4 5
1 3 5 2 4
输入样例 #5
6 15
1 3
1 4
1 5
2 1
2 3
2 4
3 1
3 4
4 2
4 6
5 2
5 3
6 1
6 2
6 3
输出样例 #5
1 5 2 3 4 6
1 5 2 4 6 3
1 5 3 4 6 2
输入样例 #6
6 15
1 3
1 5
2 1
2 4
3 1
3 2
3 4
3 5
3 6
4 6
5 1
5 4
5 6
6 3
6 5
输出样例 #6
1 3 2 4 6 5
1 5 4 6 3 2
输入样例 #7
6 16
1 3
1 6
2 3
2 4
2 6
3 1
3 6
4 2
4 3
4 5
4 6
5 2
5 6
6 1
6 3
6 5
输出样例 #7
1 6 5 2 4 3
输入样例 #8
6 21
1 2
1 5
1 6
2 1
2 3
2 4
2 5
3 1
3 2
3 4
3 6
4 1
4 2
4 6
5 1
5 2
5 4
5 6
6 2
6 3
6 4
输出样例 #8
1 2 5 4 6 3
1 2 5 6 3 4
1 5 2 3 6 4
1 5 2 4 6 3
1 5 4 6 2 3
1 5 4 6 3 2
1 5 6 2 3 4
1 5 6 3 2 4
1 5 6 3 4 2
1 5 6 4 2 3
1 6 3 2 5 4
1 6 3 4 2 5
说明
#### 样例 1 解释
![](https://cdn.luogu.com.cn/upload/image_hosting/lth4lrb1.png)
有 $1$ 个哈密尔顿回路:
- $1\to2\to3\to1$。
#### 样例 2 解释
![](https://cdn.luogu.com.cn/upload/image_hosting/if0vz8gm.png)
有 $1$ 个哈密尔顿回路:
- $1\to3\to4\to2\to1$。
#### 样例 3 解释
![](https://cdn.luogu.com.cn/upload/image_hosting/dv1tul62.png)
有 $2$ 个哈密尔顿回路:
- $1\to2\to3\to4\to5\to1$;
- $1\to2\to5\to3\to4\to1$。
#### 样例 4 解释
![](https://cdn.luogu.com.cn/upload/image_hosting/wggv2mfd.png)
有 $2$ 个哈密尔顿回路:
- $1\to2\to3\to4\to5\to1$;
- $1\to3\to5\to2\to4\to1$。
#### 样例 5 解释
![](https://cdn.luogu.com.cn/upload/image_hosting/cfi80wob.png)
有 $3$ 个哈密尔顿回路:
- $1\to5\to2\to3\to4\to6\to1$;
- $1\to5\to2\to4\to6\to3\to1$;
- $1\to5\to3\to4\to6\to2\to1$。
#### 样例 6 解释
![](https://cdn.luogu.com.cn/upload/image_hosting/wqd9tpl8.png)
有 $2$ 个哈密尔顿回路:
- $1\to3\to2\to4\to6\to5\to1$;
- $1\to5\to4\to6\to3\to2\to1$。
#### 样例 7 解释
![](https://cdn.luogu.com.cn/upload/image_hosting/jff0k373.png)
有 $1$ 个哈密尔顿回路:
- $1\to6\to5\to2\to4\to3\to1$。
#### 样例 8 解释
![](https://cdn.luogu.com.cn/upload/image_hosting/x2j19zoc.png)
有 $12$ 个哈密尔顿回路:
- $1\to2\to5\to4\to6\to3\to1$;
- $1\to2\to5\to6\to3\to4\to1$;
- $1\to5\to2\to3\to6\to4\to1$;
- $1\to5\to2\to4\to6\to3\to1$;
- $1\to5\to4\to6\to2\to3\to1$;
- $1\to5\to4\to6\to3\to2\to1$;
- $1\to5\to6\to2\to3\to4\to1$;
- $1\to5\to6\to3\to2\to4\to1$;
- $1\to5\to6\to3\to4\to2\to1$;
- $1\to5\to6\to4\to2\to3\to1$;
- $1\to6\to3\to2\to5\to4\to1$;
- $1\to6\to3\to4\to2\to5\to1$。
#### 数据规模与约定
对于固定 $n$ 和 $P$,任意一张 $m$ 条边的图权重为 $\left(\frac{1}{P}\right)^m\left(\frac{P-1}{P}\right)^{n^2-n-m}$。
- Subtask 1(1 pts):为样例。
- Subtask 2(16 pts):$n=15$。
- Subtask 3(20 pts):$n=30$。
- Subtask 4(26 pts):$n=40$。
- Subtask 5(37 pts):$n=50$。