zoukankan      html  css  js  c++  java
  • SPFA中 正逆邻接表的建立

    正邻接表的建立:

    先定义一个结构体:

    struct node

    {

    int r,v,w,next;

    }Map[];

    每输入一组数据 就通过Add函数加入到邻接表中,上图已经说得很明白了,结合着下面的代码备注我认为应该不难理解。

    void Add(int u,int v,int w)
    {
    Map[k].u=u;
    Map[k].v=v;
    Map[k].w=w;
    Map[k].next=a[u];//a[u]之前可能有值,为了防止数据的丢失,我们将当前a[U]的值存进Map[k].next中,应为一个k值只对应一个next,所以之前a[u]的值可以得到保存。
    a[u]=k;//更新当前a[u]的值//a[]的初始值为-1.
    }

    下面再结合一组数据进行进一步说明:

       u v w

    1 2 10
    2 1 60
    1 3 20
    3 4 10
    2 4 5
    4 1 50
    第一步Add(1,2,10)
    此时 Map[1].u=1 Map[1].v=2 Map[1].w=10 Map[1].next=-1 a[1]=1;
    在第三步Add(1,3,20)时
    Map[3].u=1 Map[3].v=3 Map[3].w=20 再次之前a[u]的值为1,u=1,为了防止丢失,所以Map[3].next=a[1]=1,然后a[1]更新为3.
    同理第二步a[2]第一次更新时为2,在第四则更新为a[2]=4,Map[4].next=2.


    下面说一下逆邻接表的建立:
    如果正邻接表的建立,你看懂了,那么逆邻接表的建立就很容易明白了,下面只贴出代码喽~

    void Add(int u,int v,int w)
    {
    Map[k].u=u;
    Map[k].v=v;
    Map[k].w=w;
    Map[k].next=a[v];
    a[v]=k;
    }
  • 相关阅读:
    python-Lock进程同步解决互斥
    python-Event事件处理进程同步
    python-queue队列通信
    python-无名管道进程通信
    python-signal
    python-购物车
    python-多进程类封装
    python-哈夫曼树
    python-双向链表
    openstack 开发step-by-step
  • 原文地址:https://www.cnblogs.com/alan-W/p/5671826.html
Copyright © 2011-2022 走看看