由于好久没打最短路的板子,结果两个算法几乎都忘了呢……floyd太简单了所以记得QAQ
不说了先去打一遍板子,两道题可以练手:
0、链式前向星
首先是链式前向星忘没影了……解释给自己听一遍:一个结构体edge,里面存to(边到哪里去),dis(边的长度)和next(这里是指下一条出边,比如1->2, 1->3, 1->4,那么这个next的作用就是循环1的出边2/3/4)head[i]数组的数组上标i表示节点i的最后一个相连的edge的上标(如上个例子中,i为节点1,head[i]最终为节点4)。这样,在循环里表现为:for(int i=head[u];i;i=edge[i].next)
struct edge{
int next,to,dis;
}e[maxn];
int head[10005],cnt=0;
void add(int from,int to,int dis){
e[++cnt].next=head[fro