[警示后人]若你55pts并且WA34689
查看原帖
[警示后人]若你55pts并且WA34689
50606
言琢დ楼主2024/1/4 22:43

[警示后人]若你 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)×nu+i\times n\overset{cost=0}{\rightarrow} v+(i+1)\times n

这种有向边,在调用的时候我直接写成了 add(u + i * n, v + (i+1) * n, w)

这会导致把

v+i×n→u+(i+1)×nv+i\times n\rightarrow u+(i+1)\times n

的边建成了

v+(i+1)×n→u+i×nv+(i+1)\times n\rightarrow u+i\times n

的样子。

看起来挺大的一个错误,不太清楚为啥能 55pts,也许这题数据挺弱的就是(

2024/1/4 22:43
加载中...