[警示后人]若你 55pts 并且 WA 34689 这五个点
你可能跟我的错法一样。
因为这题是无向图,我第一反应是加边程序直接写成:
void add(int u, int v, int w){
s[++sLen].next = head[u]; s[sLen].to = v; s[sLen].value = w; head[u] = sLen;
s[++sLen].next = head[v]; s[sLen].to = u; s[sLen].value = w; head[v] = sLen;
}
也就是直接建无向边。
但是这题因为是分层图,所以还需要建立类似
u+i×n→cost=0v+(i+1)×n
这种有向边,在调用的时候我直接写成了 add(u + i * n, v + (i+1) * n, w)
这会导致把
v+i×n→u+(i+1)×n
的边建成了
v+(i+1)×n→u+i×n
的样子。
看起来挺大的一个错误,不太清楚为啥能 55pts,也许这题数据挺弱的就是(