int head[maxn]; // 以i为起点的第一条边存储的位置
int head_r[maxn];
struct Edge {
Edge() {}
Edge(int _to, int _w, int _next)
: to(_to), w(_w), next(_next) {}
int next; // 与第i条边同起点的下一条边的存储位置
int to; // 边的终点
int w; // 边的权值
}edge[maxn], edge_r[maxn];
int cnt, cnt_r;
void add(int u, int v, int w) {
edge[cnt] = Edge(v, w, head[u]);
head[u] = cnt++;
edge_r[cnt_r] = Edge(u, w, head_r[v]);
head_r[v] = cnt_r++;
}
前向星
最新推荐文章于 2025-02-07 19:13:19 发布