这道题其实就是让你求最多能删多长的线,我们可以用总的长度减去最小生成树的长度,其得数就是答案
总的长度可以在读入的时候算出来
#include<bits/stdc++.h>
using namespace std;
const int N=1e5;
int fa[N];
int n,m;
struct node{
int u,v,w;
}po[N];
bool cmp(node a,node b)
{
return a.w<b.w;
}
int get(int x)
{
if(x==fa[x])return fa[x];
else return fa[x]=get(fa[x]);
}
int main()
{
cin>>n>>m;
for(int i=1;i<=n;i++)
fa[i]=i;
long long sum=0;
for(int i=1;i<=m;i++)
{
int a,b,c;
cin>>a>>b>>c;
po[i]={a,b,c};
sum+=c;
}
sort(po+1,po+1+m,cmp);
int ans=0;
for(int i=1;i<=m;i++)
{
int s=get(po[i].u);
int d=get(po[i].v);
if(s!=d) ans+=po[i].w,fa[s]=d;
}
cout<<sum-ans<<endl;
}