1005:
若没有边权,则对点权从大到小排序即可。。
考虑边,将边权拆成两半加到它所关联的两个点的点权中即可。
。。因为当两个人分别选择不同的点时,这一权值将互相抵消。
智商是硬伤啊
#include
#include
#include
#include
using namespace std;
double w[100001];
int main()
{
//freopen("1005.in","r",stdin);
int n,m,i,a,c,b;
while(~scanf("%d%d",&n,&m))
{
memset(w,0,sizeof(w));
for(i=1;i<=n;i++)scanf("%lf",&w[i]);
for(i=1;i<=m;i++)
{
scanf("%d%d%d",&a,&b,&c);
w[a]+=1.0*c/2;
w[b]+=1.0*c/2;
}
double s;
s=0;
sort(w+1,w+n+1);
for(i=n;i>=1;i-=2)
{
s+=w[i]-w[i-1];
}
printf("%.0lf\n",s);
}
return 0;
}