圖類:
#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...