3 条题解
-
112104陈皆乐 (12104陈皆乐) LV 10 @ 2024-07-28 22:36:57
杜绝抄袭,仅供参考
这是我凭借敏锐的眼力和灵活的手指写出的代码,盗窃别人劳动成果是不好的行为#include<bits/stdc++.h> #define ll long long using namespace std; const int N=6010; int T; int n,m; int f[N]; int ans; int cnt[N]; struct Edge { int u,v,w; }edge[N]; bool cmp(Edge a,Edge b) { return a.w<b.w; } int find(int x) { if(x!=f[x]) f[x]=find(f[x]); return f[x]; } int main() { ios::sync_with_stdio(false); cin>>T; while(T--) { cin>>n; for(int i=1;i<n;i++) { int u,v,w; cin>>u>>v>>w; edge[i]={u,v,w}; } sort(edge+1,edge+n,cmp); for(int i=1;i<=n;i++) f[i]=i,cnt[i]=1; ans=0; for(int i=1;i<n;i++) { int a=edge[i].u,b=edge[i].v; int x=find(a),y=find(b); if(x!=y) { ans+=(edge[i].w+1)*(cnt[y]*cnt[x]-1); f[x]=y; cnt[y]+=cnt[x]; } } cout<<ans<<endl; } return 0; }
-
02021-10-25 21:08:30@
这题最小生成树
蓝书上有 -
-12023-10-30 19:38:52@
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<queue>
#define N 10010
using namespace std;
int s[N],fa[N];
struct node{
int x,y,val;
}g[N];
bool operator<(node a,node b){
return a.val<b.val;
}
int get(int x)
{
if(fa[x]==x) return x;
return fa[x]=get(fa[x]);
}
int main()
{
int t;
cin>>t;
while(t--)
{
memset(s,0,sizeof(s));
memset(fa,0,sizeof(fa));
int n;
scanf("%d",&n);
for(int i=1;i<n;i++)
scanf("%d%d%d",&g[i].x,&g[i].y,&g[i].val);
for(int i=1;i<=n;i++) fa[i]=i,s[i]=1;
sort(g+1,g+n);
int ans=0;
for(int i=1;i<n;i++){
int x=get(g[i].x),y=get(g[i].y),val=g[i].val;
if(x==y) continue;
fa[x]=y;
ans+=(long long)(val+1)*(s[x]*s[y]-1);
s[y]+=s[x];
}
cout<<ans<<endl;
}
return 0;
}
- 1
信息
- ID
- 1023
- 难度
- 7
- 分类
- (无)
- 标签
- 递交数
- 13
- 已通过
- 9
- 通过率
- 69%
- 被复制
- 3
- 上传者