哈密爾頓迴路

2021-09-05 16:44:21 字數 954 閱讀 5795

#include#define maxn 1000

using namespace std;

int n, nex[maxn+3], mp[maxn+3][maxn+3];//n個點,nex存路徑,mp鄰接陣

bool expend(int s)

else

//若y的nex陣列未更新(-1),當前x未更新nex陣列就把x的nex記為i,然後i記為-1

//如果y的nex陣列已更新,但mp[y][i]不存在,那麼一定存在i到y的邊

nex[x] = i;//x從一進來的head到往後遞推停止一直都是有邊指向i

nex[i] = y;//y即x的nex無論是否已更新都記為i的nex,只不過是-1就更新一下隊尾

if(y == -1)tail = i;//如果y是-1,那麼隊尾記為i就好}}

if(mp[tail][head])//如果尾指向首,可以返回t了

return false;//如果隊尾不指向隊首,不成環,就重新選取st點再搜過

}bool solve()

int main()

return 0;

}哈密爾頓迴路

hdu3414:tour route

題意:給出乙個n階競賽圖(每對頂點間都有邊相連的有向圖),找出乙個哈密爾頓迴路(經過所有節點,且每個點只經過一次),沒有就輸出-1。

思路:競賽圖(n != 2)一定存在哈密爾頓路徑,但迴路就不一定了,需要遍歷每個點,構建一次哈密爾頓路徑,再判斷首尾是否相連。

sample input

50 0 1 1 1

1 0 1 1 0

0 0 0 1 0

0 0 0 0 1

0 1 1 0 0

20 1

0 00

sample output

1 3 4 5 2

-1

哈密爾頓道路與哈密爾頓迴路

簡介 1857年愛爾蘭數學家哈密爾頓發明了 周遊世界 玩具,用乙個正十二面體的20個頂點表示世界上20個大城市,30條稜代表這些城市之間的道路。要求遊戲者從任意乙個城市 即頂點 出發,延稜行走經過每個城市一次且只經過一次,最終返回出發地。哈密爾頓將此問題稱為周遊世界問題,並且作了肯定的回答。以下是一...

哈密爾頓迴路 C

突然記起來我大二寫了個哈密爾頓迴路.於是共享之.任務 求出全部的哈密爾頓迴路 完成感想 根據乙個 的演算法寫的,如果有高手可以提出改進的話,請發郵件到我的qq 409169964 ps 中國的 好多都是抄來抄去,只是名字改了.include include include include inclu...

「尤拉迴路」與「哈密爾頓迴路」

尤拉迴路 與 哈密爾頓迴路 1 尤拉迴路 17世紀的東普魯士有一座哥尼斯堡 konigsberg 城 現為 的加里寧格勒 kaliningrad 城 城中有一座奈佛夫 kneiphof 島,普雷格爾 pregol 河的兩條支流環繞其旁,並將整個城市分成北區 東區 南區和島區4個區域,全城共有7座橋將...