然而打死也没有想到用贪心,还是智商问题,智商是硬伤,也是忧伤。
贪心,每条绳子都是需要割断的,那就先割断最大值对应的那部分周围的绳子。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<cstdlib>
#include<vector>
#include<queue>
#include<stack>
#include<set>
#include<map>
#include<cmath>
#define LL long long
using namespace std;
const int maxn=1005;
int G[maxn][maxn];
struct Value
{
int val;
int i;
};
int cmp(Value a,Value b)
{
return a.val>b.val;
}
Value value[maxn];
int valuel[maxn];
int main()
{
int n,m;
cin>>n>>m;
for(int i=1;i<=n;i++)
{
cin>>valuel[i];
value[i].val=valuel[i];
value[i].i=i;
}
for(int i=0;i<m;i++)
{
int u,v;
cin>>u>>v;
G[u][v]=G[v][u]=1;
}
sort(value+1,value+n+1,cmp);
int sum=0;
int b;
for(int i=1;i<=n;i++)
{
b=value[i].i;
for(int j=1;j<=n;j++)
if(G[b][j])
{
sum+=valuel[j];
G[b][j]=G[j][b]=0;
}
}
cout<<sum<<endl;
return 0;
}