鏈式向前星 學習理解

2022-02-27 12:37:58 字數 478 閱讀 9801

學習內容:鏈式向前星

真的說實話這東西不太難,但是看了一圈部落格都講得好奇怪啊,完全不像在講東西。。好在看了一篇不錯的部落格:

第一部分:儲存

int

head[ma];

int n,cnt=0

;struct

node

edge[ma];

第二部分:新增邊

void add(int u,int v,int

w)

第三部分:遍歷圖

先說一下遍歷乙個點所連的邊(以點u 為例)

for(int j=head[u]; j & 1; j=edge[j].next)           

cout

**注意需要初始化head陣列為-1**

好了就這些,看懂就可以開心存圖了

鏈式向前星

我們首先來看一下什麼是前向星.前向星是一種特殊的邊集陣列,我們把邊集陣列中的每一條邊按照起點從小到大排序,如果起點相同就按照終點從小到大排序,並記錄下以某個點為起點的所有邊在陣列中的起始位置和儲存長度,那麼前向星就構造好了.用len i 來記錄所有以i為起點的邊在陣列中的儲存長度.用head i 記...

鏈式向前星(陣列模擬鄰接表)

有的時候有的圖可能比較稀疏而且點數較多,鄰接矩陣存不下,所以就要用到鄰接表。鄰接錶用vector陣列比較方便,但是vector比較慢。所以就有了鏈式向前星。include include include using namespace std 鏈式向前星其實就是有n鍊錶,每條鍊錶存的是所有相同結點的...

序列(差分約束 鏈式向前星)

傳送門 洛谷 p1645 有乙個整數序列,它的每個數各不相同,我們不知道它的長度是多少 即整數個數 但我們知道在某些區間中間至少有多少個整數,用區間 li,ri,ci 來描述,表示這個整數序列中至少有ci個數來自區間 li,ri 給出若干個這樣的區間,問這個整數序列的長度最少能為多少?第一行乙個整數...