题面有误?

P3366 【模板】最小生成树

NO_OI_NO_LIFE @ 2023-10-19 01:27:27

题目说无向边

add(u,v,w);

AC

add(u,v,w);
add(v,u,w);

千紫万红一点绿


by NO_OI_NO_LIFE @ 2023-10-19 01:31:04

如果是我若智,立即紫衫


by NO_OI_NO_LIFE @ 2023-10-19 01:38:16

另外数据太水了吧,这句话可有可无都

if(++k==n-1) return;

by Sincerin @ 2023-10-19 06:35:06

大哥,您加了 2m 条边。。。

sort(e+1,e+m+1,cmp);

by Sincerin @ 2023-10-19 06:36:10

void Kruskal(){
    sort(e+1,e+m+1,cmp);
    int a,b;
    for(int i=1;i<=m;i++){
        a=find(e[i].u);
        b=find(e[i].v);
        if(f[a]!=b){
            f[a]=b;
            ans+=e[i].w;
        }
    }
}

m 改成 2m 就可以了。


by Nt_Tsumiki @ 2023-10-19 07:48:01

@2022zhangyuanhao 显而易见加不加都行啊……

你那玩意是保证时间复杂度可不可行,又不是保证代码正确与否……


by Nt_Tsumiki @ 2023-10-19 07:48:38

@Nt_Tsumiki 指 if(++k==n-1) return;


by Nt_Tsumiki @ 2023-10-19 07:51:39

@2022zhangyuanhao 还有为啥是无向边就要存两次啊?

你代码中 add(u,v,w)add(v,u,w) 完全等价啊。


by njy0511_flydream @ 2023-10-19 08:07:22

实际上,最小生成树的无向边只要存一次边 @2022zhangyuanhao


by njy0511_flydream @ 2023-10-19 08:08:25

这又不是最短路


by NO_OI_NO_LIFE @ 2023-10-19 11:57:02

@njy0511_flydream 我学傻了,下午你来学校吗,注意身体啊,多喝热水~~


| 下一页