【坚持不能偷懒】
不是很想看算法…… 总结一些小技巧
以下 E指边数 V指点数
首先是一个常用的 Addedge (添加边)
裸的建边是开一个二维数组 edge [ V ] [ V ]
这需要开 V^2的空间
然而除了完全图 M<V^2,而且这不好处理重边,譬如点1和点2间,不止一条边什么的
通常用链表的方式添边,这样能使边的空间为M
然而写链表太累,一般是这么写
int e_count;
int head[N]; // 初始化为 -1
void Addedge( int u , int v , info something){
edge[e_count].v = v;
edge[e_count].something = something;
edge[e_count].next = head[u];
}
//遍历
for(int i = head[v]; i!=-1; i=edge[i].next){
}