邻接表的认识

在花1h写了[NOIP2014 提高组] 寻找道路之后,看了神仙的代码,认真的了解了一下邻接表,发现自己现在看懂了!留下一篇笔记吧。

sturct Edge{
    int next;//以i节点出发的下(上)一条边的下标(e[next])
    int to;//指向的节点
}e[MAXm];//边
int head[MAXn];//以i节点出发的第一条边(最后一条边)(e[head[u]])

int tot;//已添加边的总数
void add(int x, int y)//添加节点x->y的有向边(也可用字母u->v)
{
    ++tot;
    e[tot].to = y;//这条边指向y节点
    e[tot].next = head[x];//指向之前的第一条边
    head[x] = tot;//把第一条边变为tot
}

//遍历:
for(int i = 1;i <= n;++i)//从i节点出发
    for(int j = head[i];j;j = e[j].next)//j表示边的编号,e[j].to是指向的节点的编号
        ......
posted @ 2021-07-09 20:04  Colala  阅读(95)  评论(0)    收藏  举报