国王游戏,王阳-188金宝搏app_188金宝搏苹果下载_188bet金博宝

       Dijkstra算法是一种用来处理最短途径问题的算法。作为前端程序员了解一些经典的算法仍是很有必要的。本文给出了一种c++言语完成的版别。 

        Dijkstra算法是从一个极点到其他各极点的最短途径算法,处理的是有权图中最短途径问题。Dijkstra算法主要特点是以起始点为中心向陈薇茵外层层扩展,直到扩展到结尾停止。

输入如下所示:


1 —————–测试用例个数 

10 —————–本测试用例的点数 

1 2 4 ——————第一个点和第二个点之间的间隔是4. 

1 3 8 

2 3 3 

2 4 4 

2 5 6 

3 4 2 

3 5 2 

4 5 4 

4 6 9 

5 6 4 

代码如下:


#include <stdio.h>
#define MAX 6#define MAX_VALUE 65536
typedef struct Node{ int id; //节点id int dista希娜姆nce; //到c1的间隔 bool vi国王游戏,王阳-188金宝搏app_188金宝搏苹果下载_188bet金博宝sited;//该点是否被拜访 int parent; // 父节点}Node;
int v[MAX + 1][MAX + 1] = { 0 };//衔接表Node q[100]; //处理行列int cur = 0; //尾指针Node pts[MAX + 1];//符号每个点状况
void insert(Node it){ int i = 0; for (i = 0; i < cur; i++) { if (it.distance > q[i].distance) { break; } 李嘉臣捐款 } for (int j = cur - 1; j >= i; j--) { q[j + 1] = q[j]; } q[i] = it; cur++;}
void Dijkstra(int s){ for (int i = 1; i <国王游戏,王阳-188金宝搏app_188金宝搏苹果下载_188bet金博宝;= MAX; i++) { pts[i].id = i; pts[i].distance = MAX_VALUE; 53度飞天茅台价格 pts[i].visited = fal钻石闪婚之溺宠小娇妻se; pts[i].parent = 0; }
pts[s].distance = 0; q[cur++] = pts[s]; while (cur!=0) { cur--; Node c = q[cur]; if (pts[c.id].visite吴慰文d)continue; pts[c.id].visited = true; for (int i = 1; 办港澳通行证需求什么证件i <= MAX; i++) { if (i == c.id)continue; if (pts[i].visited)continue; adexe官网 if (v[c.id][i] == MAX_VALUE)continue; if (pts[i].distance > pts[c.id].distance + v[c.id][i]) { pts[i].distance = pts[c.id].distance + v[c.id][i]; pts[i].parent = c.id; insert(pts[i]); } } }}
void initV(void){ for (int i = 1; i <国王游戏,王阳-188金宝搏app_188金宝搏苹果下载_188bet金博宝= MAX; i++) for (int j = 1; j <= MAX; j++) { seat v[i][j] = MAX_VALUE; }}in赛欧t和尚 a[10] = { 5, 3, 9, 8, 1, 2, 7, 6, 4, 0 };
void qsort(int begin, int end){ if (begin >= end)return;
int left = begin; int right = end; int key = a[left]; while (left < right) { while ((left < right) && (a[right] <= key))right--; a[left] = a[right]; while ((left < right) && (a[left] >= key))left++; a[right] = a[left]; } a[left] = key; qsort(begin, left-1); qsort(left+1,国王游戏,王阳-188金宝搏app_188金宝搏苹果下载_188bet金博宝 end);}

void printPathDijkstra(){ for (int老友同居 i = 1; i <= MAX; i++) { printf("%d %d\n起名网免费取名", pts[i].id, pts[i].国王游戏,王阳-188金宝搏app_188金宝搏苹果下载_188bet金博宝distance); } for (int i = 1; i <= MAX; i++) { int path[MAX] = {0}; int step = 0; int cur = i; do { 国王游戏,王阳-188金宝搏app_188金宝搏苹果下载_188bet金博宝 path[ste江苏丰县天气预报p++] = cur; 虚拟定位 cur = pts[cur].pa火柴人逝世公园rent; } while (cur != 0); fo茶叶分类r (int j = step - 1; j >= 0; j--) 国王游戏,王阳-188金宝搏app_188金宝搏苹果下载_188bet金博宝 { printf("%d ", path[j]); } print树精灵和雪人f("\n"); }}
int main(int argc, char** argv){ freopen("input.txt", "r", stdin); int N; scanf("%d\n", &N);
qsort(0, 9); for (int case_num = 0; case_num < N; case_num++) { initV(); int line_num; scanf("%d\n", &line_num); for (int i = 0; i < line_num; i++) { int pt1, pt2, distance; scanf("%d %d %d", &pt1, &pt2, &distance); v[pt1][pt2] = distance; v[pt2][pt1] = distance; } 况组词 Dijkstra(1); printPathDijkstra(); }}


转载原创文章请注明,转载自188金宝搏app_188金宝搏苹果下载_188bet金博宝,原文地址:http://www.trial4fun.com/articles/568.html

上一篇:辞职信,创业板指数-188金宝搏app_188金宝搏苹果下载_188bet金博宝

下一篇:弹弓,西红柿炖牛肉-188金宝搏app_188金宝搏苹果下载_188bet金博宝