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

时间:2022-01-12 03:30:11

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

可是推例子都不正确

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

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

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

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

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

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

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

代码例如以下:

#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;
}