鏈式前向星

這個東西其實和vector差不多,但是確實比vector快,參考c++圖論vector鄰接表與鏈式前向星性能差異

邏輯是這樣的,有一個head,他標記了上一個邊是誰,最開始當然是-1嘍,每新add一條邊,當前邊的to更新爲到哪個點,next更新爲上一條邊的序號,head更新爲當前序號,這樣就實現了從後往前遍歷.

(據說可以實現從小到大排序,我似乎沒看到...)

https://blog.csdn.net/acdreamers/article/details/16902023講的很詳細的一片博客\

 

核心操作:

int head[maxn];
struct Edge
{
    int to,next;//w(weight)
} edges[maxm];  //邊從0保存
int tot;        //計數邊總數
/*
head 初始化-1,tot初始化0 
*/
void add_edge(int from,int to)
{
    edges[tot]=(Edge){to,head[from]};
    head[from]=tot++;
    in[to]++;
}

遍歷的時候:
for(int e = head[u];e!=-1;e = edges[e].next)
{
    操作
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章