Dijkstra camino más corto a la versión juvenil de la junta sólo para referencia Shenru

 

Dijkstra algoritmo de ruta más corta es un algoritmo en común, en la matriz de adyacencia, n es puntos, la complejidad de tiempo es O (n ^ 2).

Una vez más, utilizo este tablero el número relativamente bajo para fines de referencia, si usted no entiende los comentarios, desinformados, lo mejor para referirse a la referencia es mejor.

int n;
const long long inf = __LONG_LONG_MAX__;
struct NODE
{
  int u, v, next; // u、v两个点,next链式前向星要用
  long long w;    // 两点之间权值,必须是正数
} arr[10005];
int tot = 0;        // 链式前向星head[]的指针
int head[10005];
long long dist[10005];
void Init()
{
    tot = 0;    //初始化为零
    memset(arr, 0, sizeof(arr));
    memset(head, -1, sizeof(head));
    for(int i = 0; i < 10005; i ++)
    {
        dist[i] = inf;    // 起点到所有点初始距离都为无穷大,因为还没有路
    }
}
void add(int u, int v, long long w)
{
    arr[tot].u = u, arr[tot].v = v, arr[tot].w = w;  // 将两点和路权按输入顺序
    arr[tot].next = head[u];                         //压入链式前向星
    head[u] = tot;
    tot ++;
}
struct MYINT
{
    int num;   // 当前点的编号
    long long cost;
    friend bool operator<(const MYINT &a, const MYINT &b)
    {				           // 将对应结构体的sort或deque中<操作
        return a.cost > b.cost;//设置成这样
    }
    };
void bfs1()
{
    int vids[10005];     // 访问标记
    memset(vids, 0, sizeof(vids));
    MYINT be;
    be.num = 1, be.cost = 0;   // 从点1开始,cost不断记录到达新的num所需的距离
    priority_queue<MYINT>que;  // 最优路径情况下,花费较少的永远会被提到前面
    que.push(be);
    vids[be.num] = 1;    // 把起点自己先标记
    dist[be.num] = 0;    // 到自己距离为零
    while(!que.empty())
    {
        MYINT te = que.top();
        que.pop();
        vids[te.num] = 1;   // 走过的点标记为已访问
        for(int i = head[te.num]; ~i; i = arr[i].next)
        {
            MYINT en = te;
            en.num = arr[i].v;    //记录起点
            if(!vids[arr[i].v] && en.cost + arr[i].w <= dist[arr[i].v])
            {                     // 距离比原来更小, 就走走看
                en.cost += arr[i].w;
                dist[arr[i].v] = min(dist[arr[i].v], en.cost);
                que.push(en);
            }
        }
    }
}

Dentro de la ex estrella de la cadena, no se puede ir a ver el blog relacionado, o encontrará tiempo para recuperar después de mí.

Se han publicado 19 artículos originales · ganado elogios 0 · Vistas 512

Supongo que te gusta

Origin blog.csdn.net/qq_43317133/article/details/98185605
Recomendado
Clasificación