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;
}
SPFA中 正逆邻接表的建立的更多相关文章
- ACM/ICPC 之 最短路-SPFA+正逆邻接表(POJ1511(ZOJ2008))
求单源最短路到其余各点,然后返回源点的总最短路长,以构造邻接表的方法不同分为两种解法. POJ1511(ZOJ2008)-Invitation Cards 改变构造邻接表的方法后,分为两种解法 解法一 ...
- vector 邻接表的建立(好笨啊,才懂,可能太困了吧)。。
原创,未经允许不得转载. 图的建立有两种,邻接矩阵和邻接表. 邻接矩阵适用于图较为密集,(稀疏图太浪费存储空间了),图如果较为稀疏,则使用邻接表为宜,dijkstra算法就是以邻接表为基础的. 有向无 ...
- 数据结构学习笔记05图 (邻接矩阵 邻接表-->BFS DFS、最短路径)
数据结构之图 图(Graph) 包含 一组顶点:通常用V (Vertex) 表示顶点集合 一组边:通常用E (Edge) 表示边的集合 边是顶点对:(v, w) ∈E ,其中v, w ∈ V 有向边& ...
- 图->存储结构->邻接表
文字描述 邻接表是图的一种链式存储结构.在邻接表中,对图中每个顶点建立一个单链表,第i个单链表的结点表示依附顶点vi的边(对有向图是指以顶点vi为尾的弧).单链表中的每个结点由3个域组成,其中邻接点域 ...
- HDOJ 2544 最短路(最短路径 dijkstra算法,SPFA邻接表实现,floyd算法)
最短路 Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submis ...
- POJ 3013 SPFA算法,邻接表的使用
Big Christmas Tree Time Limit: 3000MS Memory Limit: 131072K Total Submissions: 19029 Accepted: 4 ...
- SPFA&邻接表 PASCAL
题目来自CODE[VS]-->热浪 1557 热浪 时间限制: 1 s 空间限制: 256000 KB 题目等级 : 钻石 题目描述 Description 德克萨斯纯朴的民眾们这个 ...
- Invitation Cards(邻接表+逆向建图+SPFA)
Time Limit: 8000MS Memory Limit: 262144K Total Submissions: 17538 Accepted: 5721 Description In ...
- 【算法系列学习】SPFA邻接表最短路 [kuangbin带你飞]专题四 最短路练习 F - Wormholes
https://vjudge.net/contest/66569#problem/F 题意:判断图中是否存在负权回路 首先,介绍图的邻接表存储方式 数据结构:图的存储结构之邻接表 邻接表建图,类似于头 ...
随机推荐
- android:layout_weight属性的使用方法总结
原创文章,转载请注明出处http://www.cnblogs.com/baipengzhan/p/6282826.html android:layout_weight属性可以和其他属性配合使用,产生多 ...
- JavaScript中以构造函数的方式调用函数
转自:http://www.cnblogs.com/Saints/p/6012188.html 构造器函数(Constructor functions)的定义和任何其它函数一样,我们可以使用函数声明. ...
- VBS操作JS网页元素实例
'=========================================================================='' VBScript Source File - ...
- c语言中gets ,getschar 和fgets 的用法及三者之间的差别
gets——从标准输入接收一串字符,遇到'\n'时结束,但不接收'\n',把 '\n'留存输入缓冲区:把接收的一串字符存储在形式参数指针指向的空间,并在最后自动添加一个'\0'.getchar——从标 ...
- repeat a string in java
if I want to repeat "hello" four times as a new string-> "hellohellohellohello&quo ...
- login/logout切换
1. 前端按钮 <img border="0" width="18" height="18" src="<%=base ...
- wlcore: firmware chunk too long
insmod wlcore_sdio.ko 的时候出现的错误 43.767890] Powering on wl12xx [ 143.846003] Powering off wl12xx [ 1 ...
- jmx additional port
http://stackoverflow.com/questions/20884353/why-java-opens-3-ports-when-jmx-is-configured http://blo ...
- 扩展方法where方法查询不到数据,不会抛异常,也不是返回的null
如题,“扩展方法where方法查询不到数据,不会抛异常,也不是返回的null”,示例代码如下: Product类: public class Product { private string name ...
- Goods transportation
Goods transportation time limit per test 2 seconds memory limit per test 256 megabytes input standar ...