題目在這裏呀
題意
題面裏的那個公式就是題意了qaq
題解
算是一道套路題吧w
把邊上的權值轉移到點上去,一個點上加邊一半的權值。
爲什麼可以這樣呢?
1、如果一條邊連接的兩個點是同一個人,那麼他能得到這條邊的權值,由於分到兩個點上了,對答案沒有影響。
2、如果一條邊連接的兩個點不是同一個人取的,那麼互相抵消,這條邊沒有貢獻,也正確。
最後排序貪心一下就行啦ww
//Suplex
#include <cstdio>
#include <iostream>
#include <cstring>
#include <algorithm>
#include <cmath>
using namespace std;
int n,m,a,b,c,k,w[100000];
long long ans;
int main()
{
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++) {scanf("%d",&w[i]);w[i]=w[i]+w[i];}
for(int i=1;i<=m;i++){
scanf("%d%d%d",&a,&b,&c);
w[a]+=c;w[b]+=c;
}
sort(w+1,w+1+n);
int k=n;
while(k){
ans+=(w[k]-w[k-1]);
k-=2;
}
printf("%lld\n",ans/2);
return 0;
}