在做圖有關的題目,在一些情況下鄰接矩陣耗費空間較大、動態開闢的鄰接表又耗時耗記憶體,這時候你可能需要乙個靜態鄰接表!
靜態鄰接表在各種圖的演算法當中也是有一席之地的,比如利用堆優化的dij演算法求最短路、spfa等等
下面給出我的靜態鄰接表模板
#includeusingnamespace
std;
const
int maxn = 1e3 + 10; ///
定義點集的數量
struct edge; ///
v為邊終點、nxt為同起點的下一條邊、w為邊權
int head[maxn]; ///
鄰接表表頭
edge edge[maxn*maxn]; ///
定義邊集
int cnt; ///
每一條邊的編號、記得初始化
int n, m; ///
n個頂點、m條邊
inline
void
init()
inline
void add(int
from, int to, int weight)///
插入邊inline
void debug()///
輸出這個鄰接表
puts(
"");
}puts(
"");
}int main(void
) debug();
}return0;
}
SPFA 靜態鄰接表 模板
spfa shotest path faster algorithm,是乙個效率很高的求最短路徑的演算法,也可以說是bellman ford演算法的優化版。具體做法是先把起點放入乙個佇列中。每次取出隊頂元素,並pop,看跟該點相鄰的其他點是否能夠鬆弛,如果可以鬆弛,改變量值,如果該點不在佇列中,則把...
靜態鄰接表
靜態鄰接表 用於儲存每個點出發的邊。csdn view plain copy include include using namespace std const long edge maxn 1005 邊的最大上限 const long point maxn 105 點的最大上限 struct no...
最大流SAP 鄰接表模板
const int maxn 1010 點數的最大值 const int maxm 400010 邊數的最大值 const int inf 0x3f3f3f3f struct edge edge maxm 注意是maxm int tol int head maxn int gap maxn dep ...