Codeforces #250 (Div. 2) C.The Child and Toy

之前一直想着建图。。。遍历

可是推例子都不正确

后来看数据好像看出了点规律

就抱着试一试的心态水了一下

就。。。。过了。。。。。

后来想想我的思路还是对的

先抽象当前仅仅有两个点相连

想要拆分耗费最小,肯定拆相应权值较小的

在这个基础上考虑问题就能够了

代码例如以下:

#include <cstdio>
#include <iostream>
#include <algorithm>
#define MAXN 10010
#define ll long long
using namespace std;

int v[MAXN];

int main(void) {
    int n, m, x, y;
    ll sum;
    while(cin >> n >> m) {
        sum = 0;
        for(int i=1; i<=n; ++i)
            cin >> v[i];
        for(int i=0; i<m; ++i) {
            scanf("%d %d", &x, &y);
            sum += min(v[x], v[y]);
        }
        cout << sum << endl;
    }
    return 0;
}


posted @ 2014-06-16 11:34  blfshiye  阅读(129)  评论(0编辑  收藏  举报