Floyd演算法原始碼

2021-10-06 01:28:35 字數 2379 閱讀 8166

思路什麼的應該都清楚,直接上原始碼(vs上以除錯)

此演算法用的是有向網結構儲存

#include

using

namespace std;

const

int max_vertex_num =20;

const

int ok =1;

const

int error =-1

;const

int overflow =-2

;const

int n_infinity =

65535

;typedef

int vrtype;

//表示頂點之間的關係的變數型別

typedef

int infotype;

//儲存弧或邊額外資訊的指標變數型別

typedef

int vertextype;

//圖中頂點的資料型別

typedef

int status;

typedef

struct

arccell, adjmatrix[max_vertex_num]

[max_vertex_num]

;typedef

struct

mgraph;

/******************函式宣告*******************/

status locatevex

(mgraph g, vertextype v)

;//根據頂點本身資料,判斷出頂點在二維陣列中的位置

status creatudg

(mgraph& g)

;//建立有向網

status printgraph

(mgraph g)

;status floyd

(mgraph& g,

int path[

][max_vertex_num]

,int dist[

][max_vertex_num]);

status showpath

(mgraph g,

int path[

][max_vertex_num]

,int start,

int end)

;/*************main*************/

intmain()

/**************函式定義****************/

status locatevex

(mgraph g, vertextype v)

}//如果找不到,輸出提示語句,返回error

if(i > g.vexnum)

return i;

}status creatudg

(mgraph& g)

for(

int i =

0; i < g.vexnum; i++)}

cout <<

"輸入頂點間的關係:"

<< endl;

for(

int i =

0; i < g.arcnum; i++

) g.arcs[n]

[m].adj = w;

}return ok;

}status printgraph

(mgraph g)

else

} cout << endl;

}return ok;

}status floyd

(mgraph& g,

int path[

][max_vertex_num]

,int dist[

][max_vertex_num])}

//計算最短路徑

for(k =

0; k < g.vexnum; k++)}

}}//列印floyd最短路徑的結果

cout <<

"floyd:"

<< endl;

cout <<

"最短路徑權值和矩陣:"

<< endl;

for(i =

0; i < g.vexnum; i++

)else

} cout << endl;

}return ok;

}status showpath

(mgraph g,

int path[

][max_vertex_num]

,int start,

int end)

cout <<

"->"

<< g.vexs[end]

<< endl;

return ok;

}

STL原始碼 演算法sort

sort演算法接受兩個randomaccessiterators 隨機訪問迭代器 然後對區間內元素以漸增方式由小到大排序 另乙個版本允許使用者指定排序方式。stl的所有關聯容器都擁有自動排序功能 以為底層的rb tree是自動排序的 因此,不需要使用sort演算法。順序容器中stack queue ...

KNN演算法原始碼解析

created on sep 16,2010 knn k nearest neighbors input inx vector to compare to existing dataset 1xn dataset size m data set of known vectors nxm labels...

Floyd演算法思想

本來 量如此小的演算法不用出模板了,但是的確思想還是很好的。1.定義概覽 floyd warshall演算法 floyd warshall algorithm 是解決任意兩點間的最短路徑的一種演算法,可以正確處理有向圖或負權的最短路徑問題,同時也被用於計算有向圖的傳遞閉包。floyd warshal...