零分 。。。求助。。。。。

P3366 【模板】最小生成树

咳咳……问题在memset上。 memset函数是将字节直接填充到内存里,所以如果`memset(dis,1,sizeof(dis))`的话,dis数组不会被初始化成1。类似的,你这里的dis数组也不会初始化成`99999999`。 事实上,因为`99999999`的二进制表示是`101 1111 0101 1110 0000 1111 1111`,在传入`memset`的时候,因为`memset`的第二个参数接收`char`类型的值,于是进行强制类型转换,只截取后一个字节,即`1111 1111`,填充后`dis`数组的初值即为`-1`,可以看见它永远不会被更新。 因此,如果将`memset`中的`inf`改为`0x7f`,并且将`dis[1]`设置为0,就好了。
by 木木! @ 2019-05-10 18:52:23


抱歉……事实上在这段程序的逻辑里`dis[1]`不用被初始化成1。 不过建议将外面的第一层处理`f=1`的循环合并到大while里(这样会好看一些),并且能用局部变量和返回值就不用全局变量(这样会避免莫名其妙的bug)。
by 木木! @ 2019-05-10 18:56:23


~~
by swl最帅了 @ 2019-05-10 21:41:03


@[木木!](/space/show?uid=49458) 谢QAQ
by 阿沐 @ 2019-05-10 21:43:17


@[阿沐](/space/show?uid=81512) 这都不会,你真是一个蒟蒻 (-> _ ->)~~好吧,其实我也不会~~
by darklove @ 2019-05-10 21:44:23


a
by Kevin_Wa @ 2019-05-12 20:22:07


|