PAT甲级 1122 Hamiltonian Cycle (25分)
1.题解
1.1分析
这道题非常简单,首先点数只有200,所以就给算法选择带来非常大的灵活性,(怎么也不会超时)。其次,问题是查询式问题只需要检验给定例子是否正确(:改成求有多少个哈密尔顿图,并按行输出可就难了,其实也不是很难:)。如果改成点数1000,并求多少个哈密尔顿图并输出,就是一道甲级30分题或者顶级考题。 扯远了:)
1.2检验例子的判定条件
(1)题目中n+1==k?
(2)n个点是否都存在?
(3)路径首尾是否相连?
(4)路径是否连通?
为了这四个条件,先在线将数据处理一下,然后离线判断:)
1.3代码
#include <iostream>
#include <vector>
#include <set>
using namespace std;
//邻接表存储
int edge[210][210]={
0};
int main<