拓扑排序~
这题为什么用 toposorttoposorttoposort 做呢?
首先这个图是一个 DAGDAGDAG 。。考虑 DAGDAGDAG 上的算法
他告诉你了公式了,所有的节点的权值是从他的上一个节点推过来的,所以这是 DAGDAGDAG 上的递推关系,我们一般用拓扑排序做。
首先,输入层的 UUU 是没用的(你可以发现他们的 UUU 是永远是 000 )(然而我特判了一下,变成了 −1-1−1 因为题里面没好像没说啊 QAQQAQQAQ ),而中间层和输出层的 UUU 可以在初始直接减到 CiC_iCi 中
我没有开一个栈或者是一个队列,因为 nnn 比较小,我直接暴力找入度为 000 的节点。出度不需要更新(因为最后出度是为了判断输出层的)
注意几个坑点:只输出大于 000 的输出层(要同时满足这两个条件),输出层的判定可以直接记录出度,出度为 000 的一定是输出层。在 NULLNULLNULL 的判定中,我们只判定输出层的 CCC 是否大于 000 。如果输出层的 CCC 都≤ 000 ,那么就输出 NULLNULLNULL 。
还有就是如果一个神经元的状态是负的,那么他不会往后传递神经信号。