【模板】链式前向星

用于存图的结构

在标准里,用于网络流的前向星和正常存图的前向星有区别

 1 #define maxn 1000
 2 struct qxx//用于正常存图
 3 {
 4     int tot,fr[maxn],to[maxn],nxt[maxn],w[maxn];
 5     void adde(int p,int q,int W)
 6     {to[++tot]=q; w[tot]=W; nxt[tot]=fr[p]; fr[p]=tot;}
 7 };
 8 ////////////////////////////////////////////////////
 9 struct qxx//用于网络流,F表示流量上限,W表示费用
10 {
11     int tot,fr[maxn],to[maxn],nxt[maxn],w[maxn],f[maxn];
12     void init()
13     {tot = 0;memset(fr,-1,sizeof(fr));memset(to,-1,sizeof(to));memset(nxt,-1,sizeof(nxt));}
14     void adde(int p,int q,int W,int F)
15     {to[tot]=q; w[tot]=W; f[tot]=F; nxt[tot]=fr[p]; fr[p]=tot++;}
16 };

时间: 2024-08-03 06:14:07

【模板】链式前向星的相关文章

ACM模板——链式前向星&&邻接表存图

邻接表待补充 1 #include<bits/stdc++.h> 2 using namespace std; 3 #define MAXN 100501 4 struct NODE{ 5 int w; 6 int e; 7 int next; //next[i]表示与第i条边同起点的上一条边的储存位置 8 }edge[MAXN]; 9 int cnt; 10 int head[MAXN]; 11 void add(int u,int v,int w){ 12 edge[cnt].w=w; 1

单元最短路径算法模板汇总(Dijkstra, BF,SPFA),附链式前向星模板

一:dijkstra算法时间复杂度,用优先级队列优化的话,O((M+N)logN)求单源最短路径,要求所有边的权值非负.若图中出现权值为负的边,Dijkstra算法就会失效,求出的最短路径就可能是错的. 设road[i][j]表示相邻的i到j的路长U集合存储已经求得的到源点最短路径的节点,S集合表示还没求得的节点dis[i]表示i到源节点(设为0)的最短路径vis[i]=1表示i节点在U集合中 刚开始dis[0]=0,vis[0]=1;dis[i]=maxn,vis[i]=0;for 1 to

链式--前向星算法(转载学习)*重点*【模板】

转载地址:http://blog.csdn.net/acdreamers/article/details/16902023 我们首先来看一下什么是前向星. 前向星是一种特殊的边集数组,我们把边集数组中的每一条边按照起点从小到大排序,如果起点相同就按照终点从小到大排序, 并记录下以某个点为起点的所有边在数组中的起始位置和存储长度,那么前向星就构造好了. 用len[i]来记录所有以i为起点的边在数组中的存储长度. 用head[i]记录以i为边集在数组中的第一个存储位置. 那么对于下图: 我们输入边的

链式前向星-模板

http://blog.csdn.net/acdreamers/article/details/16902023(原文链接,因为太好了,所以copy过来直接收藏) 我们首先来看一下什么是前向星.   前向星是一种特殊的边集数组,我们把边集数组中的每一条边按照起点从小到大排序,如果起点相同就按照终点从小到大排序, 并记录下以某个点为起点的所有边在数组中的起始位置和存储长度,那么前向星就构造好了.   用len[i]来记录所有以i为起点的边在数组中的存储长度. 用head[i]记录以i为边集在数组中

图的存储结构:邻接矩阵(邻接表)&amp;链式前向星

[概念]疏松图&稠密图: 疏松图指,点连接的边不多的图,反之(点连接的边多)则为稠密图. Tips:邻接矩阵与邻接表相比,疏松图多用邻接表,稠密图多用邻接矩阵. 邻接矩阵: 开一个二维数组graph[ ][ ]来记录图中点a与点b之间是否连通,初始化为0(或者-1之类的看情况):如果图中有可忽略的重边(如 只需重边中的最小边或最大边),则保存需要的那条边的边权,但如果有无法忽略的重边,就一定不要用邻接矩阵. int graph[MAXN][MAXN]; void graphInit() { me

链式前向星-学习笔记

模板: 数据结构: int head[LEN]; //记录源点u在mp中第一个地址i=head[u] 调用完之后就可以用mp[i]访问边表mp int cnt=0; //边表下标,随着数据的录入而扩张 struct edge{ //边 int to,next,w; }; edge mp[LEN]; //边表 加边函数: void add(int u,int v,int w){ //增加边 mp[cnt].to=v; mp[cnt].w=w; mp[cnt].next=head[u]; //指向源

【前向星】链式前向星实现以及它的遍历

深度理解链式前向星 链式前向星的构成由一个结构体(包括目标点.边权值和下一个同起点的边)和head数组(用于存放某点的第一条出边) 必要的时候还可以添加一个统计入度的数组,因为进行BFS DFS的时候是依靠点的出度和出边的邻接关系来进行的.假如有多于一个点的入度为0,那么将只能遍历到其中一个点以及往后的内容. 对于链式前向星:链式前向星每添加一条边就会更新head数组,使得head数组存放的总是最新添加的某点的出边,此出边的next总指向head数组之前存放的出边的序号. 我们输入边的顺序为:

poj-1459-最大流dinic+链式前向星

title: poj-1459-最大流dinic+链式前向星 date: 2018-11-22 20:57:54 tags: acm 刷题 categories: ACM-网络流-最大流 概述 这道是一道网络流里最大流的板子题,,, 暑期集训网络流草草水过,,连基本的算法都不知道有哪些,,,更别提怎么实现了,,,只知道网络流的大致的概念,, 今天花了一天的时间重新学习了一波,,,本以为这东西很简单,,,没想到不仅算法的实现一大堆的东西,,就连题目都有时候看不懂,,,,感受就是网络流的题不仅算法实

【最短路】Dijkstra+ 链式前向星+ 堆优化(优先队列)

Dijkstra+ 链式前向星+ 优先队列   Dijkstra算法 Dijkstra最短路算法,个人理解其本质就是一种广度优先搜索.先将所有点的最短距离Dis[ ]都刷新成∞(涂成黑色),然后从起点x (Dis[x]= 0, Dis[]值最小 )开始查询:先将x 加入(涂成灰色),对x 的所有边进行遍历,对所有搜索到的点x+ 1 进行松弛(刷新),若经过x 点的松弛,得到的距离小于原来的值:Dis[x]+ dis(x, x+ 1) < Dis[x+ 1], 则用新值刷新,把x+ 1加入(涂成灰

UESTC30-最短路-Floyd最短路、spfa+链式前向星建图

最短路 Time Limit: 3000/1000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others) 在每年的校赛里,所有进入决赛的同学都会获得一件很漂亮的T-shirt.但是每当我们的工作人员把上百件的衣服从商店运回到赛场的时候,却是非常累的!所以现在他们想要寻找最短的从商店到赛场的路线,你可以帮助他们吗? Input 输入包括多组数据. 每组数据第一行是两个整数NN ,MM (N≤100N≤100 ,M≤10000M≤1000