我正在研究图论算法。我知道什么是图形,什么是边缘等。我在c ++中有这个脚本的第一部分,它声明了一些变量和一些结构,并在它定义了一个添加边缘的函数之后。
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
const int M = 500;
struct struct_edge
{
int v;
struct_edge * n;
};
typedef struct_edge * edge;
struct_edge pool[M * M * 2];
edge top = pool, adj[M];
int V, E, match[M], qh, qt, q[M], father[M], base[M];
bool inq[M], inb[M], ed[M][M];
void add_edge(int u, int v)
{
top->v = v, top->n = adj[u], adj[u] = top++;
top->v = u, top->n = adj[v], adj[v] = top++;
}
如果这还不够,我会把脚本的另一部分放进去。 我有一些问题需要理解为什么struct_edge有一个指向另一个struct_edge的指针(它的边缘不是节点!)。我有一些严重的问题要理解这个声明: edge top = pool,adj [M]; top是指向struct_edge的指针,它有一个struct数组和一个int数组在内部?!? 有关完整代码,您可以看到此链接 http://codeforces.com/blog/entry/49402
答案 0 :(得分:2)