这题的 C 的取值可能很大,比如下面代码生成的数据:
#include<cstdio>
using namespace std;
int main(){
printf("100 3465\n");
for(int i=2;i<=100;i++){
for(int j=1;j<46;j++)if(j<i)printf("%d %d %d\n",i-j,i,j);
}
return 0;
}
生成的数据
这个图画出来就是每个编号为 i 的点与编号在 [max(0,i−45),i−1] 中的所有点连边,边权为它们的编号差。此时 C1,n 的大小远远超过 long long 的范围。所以理论上所有用 long long 存储 C 的都会输出负数(我只实测了第一个),目前只有 这篇 , @不存在的人 和 @cold_cold 的题解用 double 存的卡不掉。
(这篇是 P 党我编译不了)