拓撲排序 鄰接矩陣

2021-09-06 05:46:03 字數 2028 閱讀 1662

#include "

stdafx.h

"#include

#include

#include

#include

using

namespace

std;

#define infinity int_max

#define max_vertex_num 20 //

頂點最多個數

#define length 5 //

頂點字元長度

//鄰接矩陣

typedef struct

_graph

graph;

int locatevex(const graph & g, char

name[length])

}return -1;}

//圖的建造

void creategraph(graph &g)

}for (int i = 0; i < g.vexnum; i++)

fcin>>g.arcs;

char

archead[length];

char

arctail[length];

intweight;

for (int i = 0; i < g.arcs; i++)

}//v的第乙個鄰接點

int firstadjvex(const graph &g, int

v) }

return -1;}

//v相對於w的下乙個鄰接點

int nextadjvex(const graph &g, int v, int

w) }

return -1;}

//鄰接矩陣的輸出

void printadjvex(const graph &g)

else

}cout

<

}cout

<

************************************拓撲排序*************************************begin

//查詢入度為0的頂點

void findindegree(graph g, int

indegree)

}}}//

拓撲排序

bool

topologicalsort(graph g)

; findindegree(g, indegree);

queue

q;int i = 0

;

for (; i < g.vexnum; i++)

}int count = 0

;

while (!q.empty())}}

}if (count

else}//

************************************拓撲排序************************************end

//輔助函式,設定控制台的顏色

void

setconsoletextcolor(word dwcolor)

setconsoletextattribute(handle, dwcolor);

}int _tmain(int argc, _tchar*argv)

介面執行如下:

建造圖所用的graph.txt如下:

8

v1 v2 v3 v4 v5 v6 v7 v8

10v1 v2

10v1 v3

50v2 v4

30v3 v5

40v3 v6

99v4 v5

2v4 v7

60v5 v7

80v6 v8

22v7 v8

70

拓撲排序 鄰接矩陣表示

time limit 1000ms memory limit 65536kb submit statistic discuss problem description 給定乙個有向圖,判斷該有向圖是否存在乙個合法的拓撲序列。input 輸入包含多組,每組格式如下。第一行包含兩個整數n,m,分別代表該...

C 拓撲排序(鄰接矩陣與鄰接表

博主新手,最近在學習拓撲排序,查閱網上資料發現有些難懂且很多方法的 不盡相同,於是就想著試試自己能不能寫出來,經過一段時間的嘗試,最終實現了拓撲排序,現在將自己的想法發表出來,可能有些瑕疵,希望各位看後不吝賜教 不知道是不是就是網上的方法,之前看網上的沒看懂.建立鄰接矩陣,輸入頂點數和邊數,初始化所...

拓撲排序 關鍵路徑(鄰接矩陣實現)

include include define inf 65535 using namespace std int map 110 110 構建鄰接表 int ear 110 in 110 late 110 構建最早出發表和最晚完成表 int n,m,max stackturn 存放拓撲排序的順序,最...