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;
13     edge[cnt].e=v;    //edge[i]表示第i条边的终点
14     edge[cnt].next=head[u]; //head[i]表示以i为起点的最后一条边的储存位置
15     head[u]=cnt++;
16 }
17 int main(){
18     memset(head,0,sizeof(head));
19     cnt=1;
20     int n;
21     cin>>n;
22     int a,b,c;
23     while(n--){
24         cin>>a>>b>>c;
25         add(a,b,c);
26     }
27     int start;
28     cin>>start;
29     for(int i=head[start];i!=0;i=edge[i].next)
30        cout<<start<<"->"<<edge[i].e<<" "<<edge[i].w<<endl;
31     return 0;
32 }

原文地址:https://www.cnblogs.com/Asurudo/p/11479215.html

时间: 2024-10-08 14:57:05

ACM模板——链式前向星&&邻接表存图的相关文章

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

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

单元最短路径算法模板汇总(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

邻接表+链式前向星

(我一个蒟蒻.分不清这两个姐妹qwq 邻接表: 1 -> 2 -> 3 -> 5 2 -> 3 3 -> 4 4 -> 1 -> 5 5 ->^ 链式前向星: edge[0].to = 2;     edge[0].next = -1;     head[1] = 0; edge[1].to = 3;     edge[1].next = -1;     head[2] = 1; edge[2].to = 4;     edge[2],next = -1; 

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

转载地址: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为边集在数组中

【模板】链式前向星

用于存图的结构 在标准里,用于网络流的前向星和正常存图的前向星有区别 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 ///////////////////////////////

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加入(涂成灰

前向星和链式前向星

前向星和链式前向星 1.前向星 前向星是以存储边的方式来存储图,先将边读入并存储在连续的数组中,然后按照边的起点进行排序,这样数组中起点相等的边就能够在数组中进行连续访问了.它的优点是实现简单,容易理解,缺点是需要在所有边都读入完毕的情况下对所有边进行一次排序,带来了时间开销,实用性也较差,只适合离线算法.图一-2-4展示了图一-2-1的前向星表示法. 2.链式前向星(就是数组模拟链表) 链式前向星和邻接表类似,也是链式结构和线性结构的结合,每个结点i都有一个链表,链表的所有数据是从i出发的所有