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