ACM內部函式9

2021-05-25 17:35:16 字數 1872 閱讀 5809

prim(graph g,int vcount,int father);

g:圖,用鄰接矩陣表示

vcount:表示圖的頂點個數

father:用來記錄每個節點的父節點

null

常數max_vertexes

為圖最大節點數

常數infinity

為無窮大

#define infinity 1000000

#define max_vertexes 5 

typedef int graph[max_vertexes][max_vertexes];

void prim(graph g,int vcount,int father)

used[0]=1; 

for (i=1;i

} }result=dijkstra(graph g,int n,int s,int t, int path);

g:圖,用鄰接矩陣表示

n:圖的頂點個數

s:開始節點

t:目標節點

path:用於返回由開始節點到目標節點的路徑

最短路徑長度

輸入的圖的權必須非負

頂點標號從0開始

用如下方法列印路徑:

i=t;

while (i!=s)

printf("%d/n",s+1); 

int dijkstra(graph g,int n,int s,int t, int path)

mark[s]=1;path[s]=0;d[s]=0;

for (i=1;i

mark[w]=1;

for (j=0;j

if ((mark[j]==0)&&(g[w][j]!=infinity)&&(d[j]>d[w]+g[w][j]))

} return d[t]; }

result=bellman_ford(graph g,int n,int s,int t,int path,int success);

g:圖,用鄰接矩陣表示

n:圖的頂點個數

s:開始節點

t:目標節點

path:用於返回由開始節點到目標節點的路徑

success:函式是否執行成功

最短路徑長度

輸入的圖的權可以為負,如果存在乙個從源點可達的權為負的迴路則success=0

頂點標號從0開始

用如下方法列印路徑:

i=t;

while (i!=s)

printf("%d/n",s+1); 

int bellman_ford(graph g,int n,int s,int t,int path,int success)

success=0;

for (i=0;i

for (j=0;j

if (d[j]>d[i]+g[i][j]) return 0;

success=1;

return d[t]; }

floyd_washall(graph g,int n,graph d,graph p);

g:圖,用鄰接矩陣表示

n:圖的頂點個數 d:

d[i,j]

表示從i到j

的最短距離 p:

p[i,j]

表示從i到j

的最短路徑上

j 的父節點 

null

void floyd_washall(graph g,int n,graph d,graph p)

for (i=0;i

for (k=0;k

for (i=0;i

for (j=0;j

if (d[i][j]>d[i][k]+d[k][j])

}

ACM內部函式10

quicksort int l,int r,int b l 排序上界,開始時 l 0 r 排序下界,開始時 r 陣列元素個數 b 被排序的元素 null 輸出公升序序列 void quicksort int l,int r,int b while b i i i if i b i x quickso...

ACM模板(9)鍊錶

acm模板列表 目錄 一,鍊錶 二,獲取鍊錶長度 鍊錶反轉 鍊錶中倒數第k個節點 三,鍊錶合併 把兩個鍊錶交叉合併為乙個鍊錶 把兩個公升序的鍊錶合併為乙個公升序的鍊錶 四,鍊錶和結構體指標陣列互轉 鍊錶排序 五,判斷鍊錶是否有環 求煉錶環的長度 求煉錶環的第乙個節點 struct listtnode...

ACM內部函式 數學問題 大數乘小數

include include include includeusing namespace std 語法 mult char c,char t,int m 引數 source 被乘數,用字串表示,位數不限 result 結果,用字串表示 m 乘數 返回值 null 注意 需要 string.h v...