图的最短路径——DIJ算法,有向图的矩阵实现,图的基本操作( 二 )

< 10; i++) {visited[i] = 1;}queue Q;for (int v = 0; v < m.vexnum; v++) {if (visited[v] == 1) {visited[v] = -1;cout << m.vexs[v]<<"";Q.push(v);while (!Q.empty()) {int u;u = Q.front();Q.pop();for (int w = 0; w < m.vexnum; w++) {if (visited[w] == 1&&m.arcs[u][w]!=INFINITY) {cout << m.vexs[w] << "";visited[w] = -1;Q.push(w);}}}}}}int DFSvisited[10];void DFS(MGraph m,int v) {cout << m.vexs[v]<<"";DFSvisited[v] = -1;int w;for (w = 0; w < m.vexnum; w++) {if (DFSvisited[w] != -1&&m.arcs[v][w] != INFINITY)DFS(m, w);}}void DFS(MGraph m) {for (int i=0; i < 10; i++)DFSvisited[i] = i;for (int i = 0; i < m.vexnum; i++)if(DFSvisited[i] != -1)DFS(m, i);}//创建图void CreatMap(int n, int m) {map.vexnum = n;map.arcnum = m;int i, j, w;for (i = 0; i < n; i++)map.vexs[i] = i ;for (i = 0; i < n; i++)for (j = 0; j < n; j++)map.arcs[i][j] = INFINITY;for (int k = 1; k <= m; k++) {//想依次输入可添加下面一行;//cout << "请输入第"<> i >> j >> w;if(i> n >> m;cout << "请输入起始顶点,终止顶点,权值,顶点范围[0 n-1]\n";cout << "形如 0 4 6\n";CreatMap(n, m);cout << "\n广度遍历 BFS\n";BFS(map);cout << "\n深度遍历 DFS\n";DFS(map);ShortestPath_DIJ(map, 0);cout << "\nMap";return 0;}