之前一直想着建图。。。遍历
可是推例子都不正确
后来看数据好像看出了点规律
就抱着试一试的心态水了一下
就。。。。过了。。。。。
后来想想我的思路还是对的
先抽象当前仅仅有两个点相连
想要拆分耗费最小,肯定拆相应权值较小的
在这个基础上考虑问题就能够了
代码例如以下:
#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;
}