社区讨论
【TLE 65分求调】
P1340兽径管理参与者 2已保存回复 1
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 1 条
- 当前快照
- 1 份
- 快照标识符
- @mhjd0w7g
- 此快照首次捕获于
- 2025/11/04 00:34 4 个月前
- 此快照最后确认于
- 2025/11/04 00:34 4 个月前
CPP
#include<bits/stdc++.h>
using namespace std;
long long n,m;
long long pre[100010];
struct F{
long long x,y,l;
}a[100010];
bool cmp(F x,F y){
return x.l<y.l;
}
long long find(long long x){
if(pre[x]==x) return x;
pre[x]=find(pre[x]);
return pre[x];
}
void work(long long x,long long y)
{
x=find(x);
y=find(y);
if(x==y) return;
pre[x]=y;
}
int main(){
scanf("%lld%lld",&n,&m);
for(int k=1;k<=m;k++)
{
scanf("%lld%lld%lld",&a[k].x,&a[k].y,&a[k].l);
sort(a+1,a+1+k,cmp);
for(int i=1;i<=n;i++) pre[i]=i;
long long j=n-1,ans=0;
for(int i=1;i<=k;i++)
{
if(j==0) break;
long long X=find(a[i].x);
long long Y=find(a[i].y);
if(X!=Y)
{
work(a[i].x,a[i].y);
ans=ans+a[i].l;
// cout<<a[i].x<<" "<<a[i].y<<" "<<a[i].l<<endl;
j--;
}
}
if(j) printf("-1\n");
else printf("%lld\n",ans);
}
return 0;
}
回复
共 1 条回复,欢迎继续交流。
正在加载回复...