BZOJ 2563 阿狸和桃子的游戏

Posted on 2016-08-19 16:19  ziliuziliu  阅读(113)  评论(0编辑  收藏  举报

每个边权分配到两个点。

两人权值相减,若一条边分属两人,则为点权相减。

否则,为点+权-点。

sort贪心即可。

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define maxv 10050
using namespace std;
long long n,m,w[maxv],x,y,z;
int main()
{
    scanf("%lld%lld",&n,&m);
    for (long long i=1;i<=n;i++)
    {
        scanf("%lld",&w[i]);
        w[i]*=2;
    }
    for (long long i=1;i<=m;i++)
    {
        scanf("%lld%lld%lld",&x,&y,&z);
        w[x]+=z;w[y]+=z;
    }
    long long ans=0;
    sort(w+1,w+n+1);
    for (long long i=n;i>0;i-=2)
        ans+=(w[i]-w[i-1]);
    printf("%lld\n",ans/2);
    return 0;        
}