Adjacency List Dijkstra
来源:互联网 发布:淘宝图片实拍保护网址 编辑:程序博客网 时间:2024/05/17 08:44
///啊 次我一个太滚吧~#include<iostream>#include<cstring>using namespace std;struct arcnode{ int adjvex; int weight; arcnode *nextarc;};typedef struct vnode{ int data; arcnode * firstarc;}Adjvex[20];struct Graph{ int vexnum, arcnum; Adjvex vertices;};int d[100];int path[100];bool vis[100];int ss;const int inf = 65535;int LocateVex(Graph G, int u){ for(int i=0; i<G.vexnum; i++) { if(G.vertices[i].data == u) return i; }}void create_graph(Graph &G){ cin >> G.vexnum >> G.arcnum; for(int i=0; i<G.vexnum; i++) { G.vertices[i].data = i; G.vertices[i].firstarc = NULL; } int s; cin >> s; ss = LocateVex(G, s); int u, v, w; arcnode *p, *q; for(int i=0; i<G.arcnum; i++) { cin >> u >> v >> w; p = new arcnode; q = new arcnode; if(p == NULL || q == NULL) return; int k = LocateVex(G, u); int kk = LocateVex(G, v); p->weight = w; p->adjvex = kk; p->nextarc = G.vertices[k].firstarc; G.vertices[k].firstarc = p; q->weight = w; q->adjvex = k; q->nextarc = G.vertices[kk].firstarc; G.vertices[kk].firstarc = q; }}void dijkstra(Graph G){ arcnode *p; d[ss] = 0; vis[ss] = true;/// vis[] 编号 for(p=G.vertices[ss].firstarc; p!=NULL; p=p->nextarc) { int k = p->adjvex; d[k] = p->weight; path[k] = ss; } for(int i=0; i<G.vexnum-1; i++) { int min = inf; int kk; for(int j=0; j<G.vexnum; j++) { if(!vis[j] && min>d[j]) { min = d[j]; kk = j; } } vis[kk] = true; for(p=G.vertices[kk].firstarc; p!=NULL; p=p->nextarc) { int kkk = p->adjvex; if(!vis[kkk] && d[kkk] > d[kk]+p->weight) { d[kkk] = d[kk]+p->weight; path[kkk] = kk; } } } int to; cin >> to; int a = LocateVex(G, to); cout << d[a] << endl;}int main(){ memset(vis, false, sizeof(vis)); memset(path, -1, sizeof(path)); memset(d, inf, sizeof(d)); Graph G; create_graph(G); dijkstra(G);}/*4 510 1 31 3 11 2 10 2 12 3 302Process returned 0 (0x0) execution time : 11.973 sPress any key to continue.*/
0 0
- Adjacency List Dijkstra
- Geeks : Dijkstra’s Algorithm for Adjacency List Representation 最短路径
- Graph Theory Adjacency List.解释
- GeeksforGeeks - Adjacency List邻接矩阵C\C++代码
- Adjacency list追溯到源头的方法
- SQL tree data struct(1): adjacency list (id, parentid)
- 图(一)之邻接表Adjacency List
- The history of Graph Store(matrix, adjacency list, and orthogonal list)
- 关于临接表2种方式实现的测验(Adjacency List)
- FW - java - Adjacency list- 2013年12月19日15:42:04- BFS - edge Node
- Adjacency List表示下Depth-First-Search(DFS)及Breadth-First-Search(BFS)的c++实现
- 邻接矩阵(Adjacency Matrix)
- Adjacency Lists + DFS.
- 邻接矩阵(Adjacency Matrix)
- Primitives with Adjacency
- Adjacency and topology
- Adjacency Matrix -- c++实现
- 图(有向图)的邻接表表示 C++实现(遍历,拓扑排序,最短路径,最小生成树) Implement of digraph and undigraph using adjacency list
- 提高SQL Server性能
- PAT B1002
- linux内核调试2
- kylin-1.5.4.1安装问题解决
- poj1741 点分治
- Adjacency List Dijkstra
- RecyclerView的基本使用
- 【Basic Code】浅谈线程锁及Queue队列
- Java设计模式----组合模式(composite)
- Shimeji开源桌宠代码学习(3)
- 新浪短链接API接口示例
- 【机房合作】策略+职责链在下机中的应用
- SSL P1364 医院设置
- python快速入门