首先构造一条路径,形如下图:

上图中水流被分流 3 次,最终剩下 331。
数据范围中:
数据保证,污水在从一个接收口流向一个最终排水口的过程中,不会经过超过 10 个中间排水结点(即接收口和最终排水口不算在内)。
即中间最多分流 11 次,所以这样构造路径可以使最终水流达到 3111。
因为 di≤5,所以用以上方法同样可以分流出 4111 和 5111,只需要将每一个节点的出度分别设为 4 和 5。
而上面三个分数的分母是互质的,所以让这三条路径流向同一个汇点,可以使分母达到 311×411×511=36,279,705,600,000,000,000≈3.6×1019,而 long long 最大可存 263−1≈9.2×1018,unsigned long long 最大 264−1≈1.84×1019,均不足以存下极限分母。
而在边数很大(比如极限 5×105)时,这样的结构很容易出现(甚至不需要特别去构造),从而卡爆 (unsigned) long long。
综上所述,必须要用 __int128(极限 1.7×1038)才可以过这道题。当然你愿意手写高精那当我没说。