哈密頓迴路

2021-06-01 08:17:57 字數 1386 閱讀 3595

圖類:

#include#include#include#include#includeusing namespace std;

template//t為頂點的資料型別,e為圖中邊的權值的資料型別

class graph

//返回最大頂點數

int numberofedges()//返回當前邊數

t getvalue(int i); //取頂點i的值,i不合理返回0

e getweight(int v1,int v2); //取邊(v1,v2)上的權值

int getfirstneighbor(int v);//取頂點v的第乙個鄰接頂點

int getnextneighbor(int v,int w);//取頂點v的鄰接頂點w的下乙個鄰接頂點

bool insertvertice(const t &vertex);//插入頂點

int init(istream &in);//根據使用者輸入,獲得圖的鄰接矩陣

int randinit();//隨機初始化圖(無向圖)

int output(ostream &out); //輸出圖的矩陣 };

templategraph::graph(int sz=defaultvertices) //根據使用者的要求,建立sz大小的基於鄰接矩陣的圖

return null;

}templatee graph::getweight(int v1,int v2)//取邊(v1,v2)上的權值

else

for(;w!=-1&&visited[w]==true;w=mygraph.getnextneighbor(v,w))

if(w==-1) //未找到可行的下乙個頂點

else //找到可行的下乙個頂點

else //成功找到迴路

fout<<"哈密頓迴路 : ";

e distance=0;

int n=temp.top();

mystack.push(n);

temp.pop();

int last=n;

fout//

mystack.pop();

visited[w]=false;}}

else

}

} fout<<"最短哈密頓迴路的長度為:"; void cpy(int *&des)

while(!mystack.empty()) //佇列不為空

if(w!=-1) }}

} for(int w=mygraph.getfirstneighbor(v);w!=-1;w=mygraph.getnextneighbor(v,w))

哈密頓迴路

哈密頓迴路好多,其實不是很難,但是看了一天了。看一會睡一會,什麼狀態啊。view code 題目 題目分析 有敵對關係的小朋友,不能坐在一起。最後圍成乙個圈,吃飯。將小朋友看成點,有敵對關係的看成沒有邊,最後構成乙個迴路。哈密頓迴路。小小總結 哈密頓迴路 充分條件 無向連通圖中任意2點度數之和大於等...

哈密頓迴路

quad 設無向圖 g v,e 其中 v 是點集,e 是邊集,n v 表示圖中點的數量,m e 表示圖中邊的數量。hamilton 通路 quad 經過圖 g 中每個節點一次且僅一次的通路稱為 hamilton 通路 hamilton 迴路 quad 經過圖 g 中每個節點一次且僅一次的通路稱為 h...

最小哈密頓迴路

老楊留的作業,折騰幾個小時加上參考別人的終於寫出來了,還是很弱啊。效率貌似還可以,強化了分支定界的條件之後計算n 20的情況只需要十幾秒。好好體會一下 include include include include using namespace std define n 15 int curlig...