链式前向星

#include <bits/stdc++.h>

using namespace std;
const int N = 1000;

int to[N], v[N], ne[N], h[N];  //to代表连接的点,v代表边权,ne代表next,h代表head
int idx;                       //idx即index,表示当前分配的下标
int x, y, w;

//加边(带权的情况)
void add1(int x, int y, int w) {  //x-->y,权值为w的边
    to[++idx] = y, v[idx] = w;    //存数据
    ne[idx] = h[x], h[x] = idx;   //插入表头
}

//加边(不带权的情况)
void add2(int x, int y) {
    to[++idx] = y;
    ne[idx] = h[x], h[x] = idx;
}

int main(void) {
    ios::sync_with_stdio(false);
    cin.tie(0);

    memset(h, -1, sizeof h);  //初始化,h为-1则代表指向空
    //遍历
    for (int i = h[x]; ~i; i = ne[i]) {
        int y = to[i], w = v[i];
        //这里写找到了一条x-->y权值为w的边之后的操作
    }
    return 0;
}

上一篇:CF1454E Number of Simple Paths(容斥+基环树)


下一篇:ACWing826. 单链表(数组模拟链表)