題意:給出乙個十二面體,它的每個頂點是乙個城市,從乙個城市m出發並回到m,輸出所有可行的路徑
先把邊記錄下來,再深搜
1 #include2 #include3 #include4 #include 5 #include6 #include7 #include8 #includeview code9 #include10 #include11
using
namespace
std;
1213 typedef long
long
ll;14
const
int inf = (1
<<30)-1;15
const
int mod=1000000007;16
const
int maxn=1000005;17
18int g[105][105
];19
intans[maxn];
20int
s,kase,m;
2122
void dfs(int
a)29
30for(int i=1;i<=20;i++)39}
4041}42
4344
intmain()
53while(scanf("
%d",&m)!=eof&&m)
57return0;
58 }
HDU 2181 哈密頓繞行世界問題
用dfs字典序搜尋即可,搜到末尾時回到原來的位置就是一條路徑,可以加乙個小剪枝,如果搜尋中經過了起始位置,可以剪枝 我把路徑打表儲存在陣列裡,防止有過多的重複輸入 include include include include includeusing namespace std const int...
HDU 2181 哈密頓繞行世界問題
由於資料量其實很小,直接dfs即可,細節見注釋 include include includeusing namespace std bool vis 21 int adj 21 3 cnt,tpath 20 start void dfs int k,int level return vis k 1...
HDU 2181 哈密頓繞行世界問題
解題思路 dfs遍歷出所有的路徑,遍歷過程中用記錄當前點的字首,每次搜到一條道路直接遞迴輸出即可 ac include include include include using namespace std const int maxn 21 int pre maxn bool vis maxn i...