在ACM比赛中,邻接表往往不是用类实现的,而是用数组模拟的。下面举个例子:
首先建立三个数组:head[N],next[E],adj[E],vv[E]。
head[N]数组存储顶点表,adj[E]存储边表顶点,还有next[E]存储边表的结点的下一个。
假如数据输入为: (为了方便描述,v0结点用1表示,v1结点用2表示——以此类推)
a b W
1 2 1
1 4 2
2 1 3
2 3 4
4 3 5
4 5 6
5 2 7
C++描述:
num=1;
memset(head,0,sizeof(head));
memset(next,0,sizeof(next));
memset(adj,0,sizeof(adj));
void init(int a ,int b,int w