链式前向星建图

 1 /*
 2 //链式前向星维护的是一个边集数组
 3 const int N = 1e6+5;//边的数目
 4 int head[N];//某个点相邻的第一条边的编号
 5 int cnt;//边的数目
 6 struct Edge{
 7     int to;//这条边到达的终点
 8     int dis;//这条边的权值
 9     int next;//这条边指向的下一条边的编号(可以自己想想,并不是上一条,采用的是类似于前插法)
10 }edge[N];
11 void addEdge(int u,int v,int w){//u->v 的一个权值为w的边
12     cnt++;
13     edge[cnt].to = v;
14     edge[cnt].dis = w;
15     edge[cnt].next = head[u];
16     head[u] = cnt;
17 }
18 //遍历
19 int u = 1;
20 for(int i=head[u]; i; i=edge[i].next){
21     cout << u << "->" << edge[i].to << " " << edge[i].dis << endl;
22 }
23 */
24 #include<bits/stdc++.h>
25 using namespace std;
26 const int N = 1e5+5;
27 int head[N],cnt;
28 struct Edge{
29     int to,dis,next;
30 }e[N];
31 void addEdge(int u,int v,int w){
32     cnt++;
33     e[cnt].to = v;
34     e[cnt].dis = w;
35     e[cnt].next = head[u];
36     head[u] = cnt;
37 }
38 int main(){
39     int n,m;
40     cin >> n >> m;
41     for(int i=1; i<=m; i++){
42         int u,v,w;
43         cin >> u >> v >> w;
44         addEdge(u,v,w);
45     }
46     int u = 1;
47     for(int i=head[u];i;i=e[i].next){
48         cout << u << "->" << e[i].to << " " << e[i].dis << endl;
49     }
50     return 0;
51 }
52 /*
53 5 6
54 1 2 3
55 2 3 5
56 3 4 6
57 1 3 8
58 4 1 9
59 1 5 6
60 */

原文地址:https://www.cnblogs.com/zhangqiling/p/12580423.html

时间: 2024-10-07 08:58:07

链式前向星建图的相关文章

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

NYOJ 20 吝啬的国度 【BFS+链式前向星建图,Vector建图】

吝啬的国度 时间限制:1000 ms  |  内存限制:65535 KB 难度:3 描述 在一个吝啬的国度里有N个城市,这N个城市间只有N-1条路把这个N个城市连接起来.现在,Tom在第S号城市,他有张该国地图,他想知道如果自己要去参观第T号城市,必须经过的前一个城市是几号城市(假设你不走重复的路). 输入 第一行输入一个整数M表示测试数据共有M(1<=M<=5)组 每组测试数据的第一行输入一个正整数N(1<=N<=100000)和一个正整数S(1<=S<=100000

最短路 spfa 算法 &amp;&amp; 链式前向星存图

推荐博客  https://i.cnblogs.com/EditPosts.aspx?opt=1 http://blog.csdn.net/mcdonnell_douglas/article/details/54379641 spfa  自行百度 说的很详细 spfa 有很多实现的方法  dfs  队列  栈  都可以 时间复杂度也不稳定 不过一般情况下要比bellman快得多 #include <stdio.h> #include <math.h> #include <st

链式前向星存图

#include <iostream> #include <cstdio> #include <algorithm> #include <cstring> #define INF 0x3f3f3f3f using namespace std; typedef long long ll; const int maxn = 1000000 + 5; int n,m,be,en; int to[maxn]; int cost[maxn]; int head[max

【最短路】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加入(涂成灰

HDU3342 Legal or Not【拓扑排序】【链式前向星】

Legal or Not Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 4633    Accepted Submission(s): 2115 Problem Description ACM-DIY is a large QQ group where many excellent acmers get together. It is

链式前向星DFS

采用链式前向星存图的DFS: #include <iostream> #include <cmath> #include <cstdio> #include <cstring> #include <cstdlib> #include <algorithm> #include <queue> using namespace std; typedef long long LL; const int maxN = 100 + 3

关于MOD&amp;链式前向星-2015年9月25日

好久没写了,其实一直也在做,但是没心情写总结文章,所以还是以后做一点就写一点吧. 最近状态很差很差,打水题都过不了,我也是醉了. 重做了去年的两道noip题,D1T2和D2T3,里面包括了MOD运算. MOD运算基本满足四则运算,所以很多表达式在模p意义下都是等价的,但除法除外. 但是还要注意,需要在非负情况下进行计算,当出现减法时,一定要加到正值再做. 另外注意溢出的问题,及时取模也是很重要的. noip2014D1T2可以用链式前向星存图. 大概就是这样: struct Edge{ int

hdu2647 逆拓扑,链式前向星。

原文地址 题目分析 题意 老板发工资,但是要保证发的工资数满足每个人的期望,比如A期望工资大于B,只需比B多1元钱即可.老板发的最低工资为888元.输出老板最少发的工资总数,若是无法满足大家的期望,则输出-1. 分析 很明显这是一个拓扑问题,若存在环则无法满足大家的期望.若按常理,A>B,则可能会建立A指向B的有向边.此题不然,因为我们只知道最少的钱数是888,所以从小到大进行拓扑排序更为恰当.所以是建立B指向A的有向边.此之为逆拓扑排序.因为这样处理后排序的结果与原先拓扑排序的顺序相反. 以图