为什么使用const int会导致UKE
查看原帖
为什么使用const int会导致UKE
370037
_farawaystar_楼主2023/11/4 23:04

rt.

定义常量时使用const int就会炸

使用#define 就没事

#include<bits/stdc++.h>
#define N 100005
#define int long long
using namespace std;
int sz[N],fa[N],n,ans;
int find(int x){
    if(fa[x]==x) return x;
    return fa[x]=find(fa[x]);
}
struct node{
	int u,v,w;
}e[N];
signed main(){
	cin>>n;
    for(int i=1;i<=n;i++){
		fa[i]=i;
		sz[i]=1;
	}
	for(int i=1;i<n;i++)cin>>e[i].u>>e[i].v>>e[i].w;
	sort(e+1,e+n,[](node x,node y){return x.w<y.w;});
	for(int i=1;i<n;i++){
        int x=find(e[i].u),y=find(e[i].v);
        ans+=sz[x]*sz[y]*e[i].w;
	    if(x==y)continue;
        fa[y]=x;
        sz[x]+=sz[y];
    }
	cout<<ans;
	return 0;
}

AC.

#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=1e5+5;
int sz[N],fa[N],n,ans;
int find(int x){
    if(fa[x]==x) return x;
    return fa[x]=find(fa[x]);
}
struct node{
	int u,v,w;
}e[N];
signed main(){
	cin>>n;
    for(int i=1;i<=n;i++){
		fa[i]=i;
		sz[i]=1;
	}
	for(int i=1;i<n;i++)cin>>e[i].u>>e[i].v>>e[i].w;
	sort(e+1,e+n,[](node x,node y){return x.w<y.w;});
	for(int i=1;i<n;i++){
        int x=find(e[i].u),y=find(e[i].v);
        ans+=sz[x]*sz[y]*e[i].w;
	    if(x==y)continue;
        fa[y]=x;
        sz[x]+=sz[y];
    }
	cout<<ans;
	return 0;
}

zero.

2023/11/4 23:04
加载中...