“Miku is matchless in the world!” As everyone knows, Nakano Miku is interested in Japanese generals, so Fuutaro always plays a kind of card game about generals with her. In this game, the players pick up cards with generals, but some generals have contradictions and cannot be in the same side. Every general has a certain value of attack power (can be exactly divided by 100), and the player with higher sum of values will win. In this game all the cards should be picked up.

This day Miku wants to play this game again. However, Fuutaro is busy preparing an exam, so he decides to secretly control the game and decide each card's owner. He wants Miku to win this game so he won't always be bothered, and the difference between their value should be as small as possible.To make Miku happy, if they have the same sum of values, Miku will win. He must get a plan immediately and calculate it to meet the above requirements, how much attack value will Miku have?

As we all know, when Miku shows her loveliness, Fuutaro's IQ will become 0. So please help him figure out the answer right now!

Input

Each test file contains several test cases. In each test file:

The first line contains a single integer T(1≤T≤10) which is the number of test cases.

For each test case, the first line contains two integers: the number of generals N(2≤N≤200) and thenumber of pairs of generals that have contradictions⁡ M(0≤M≤200).

The second line contains N integers, and the i-th integer is ci, which is the attack power value of the i-th general (0≤ci≤5×104).

The following M lines describe the contradictions among generals. Each line contains two integers A and B , which means general A and B cannot be on the same side (1≤A,B≤N).

The input data guarantees that the solution exists.

Output

For each test case, you should print one line with your answer.

Hint

In sample test case, Miku will get general 2 and 3.

样例输入

1
4 2
1400 700 2100 900
1 3
3 4

样例输出

2800

题意

N个数选任意个给A,其余的给B,M对冲突,A和B里的数都不能冲突,问A和>=B和,并且使A-B差值最小,输出A的值。保证有解。

题解

由于A集合里的数不能冲突,考虑二分图01染色,对于每个连通块。

差值为|0的个数-1的个数|,dp[i]表示A-B差值为i是否可行。

知道差值i,总和sum,那么A=(sum+i)/2。

代码

 #include<bits/stdc++.h>
using namespace std; int a[],color[];
bool dp[],dp1[];
vector<int>G[];
int sumc[];
void dfs(int u,int col)
{
color[u]=col;
sumc[col]+=a[u];
for(int i=;i<G[u].size();i++)
{
int v=G[u][i];
if(color[v]==-)
dfs(v,col^);
}
}
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
int n,m,u,v,sum=;
scanf("%d%d",&n,&m);
for(int i=;i<=n;i++)G[i].clear(),color[i]=-;
for(int i=;i<=n;i++)scanf("%d",&a[i]),a[i]/=,sum+=a[i];
for(int i=;i<=m;i++)
{
scanf("%d%d",&u,&v);
G[u].push_back(v);
G[v].push_back(u);
}
for(int i=;i<=sum;i++)dp[i]=;
dp[]=;
for(int i=;i<=n;i++)
if(color[i]==-)
{
sumc[]=sumc[]=;
dfs(i,);
int ca=abs(sumc[]-sumc[]);
for(int j=sum;j>=;j--)
{
if(dp[j])
{
if(abs(j+ca)<=sum)dp1[abs(j+ca)]=;
dp1[abs(j-ca)]=;
}
}
for(int j=sum;j>=;j--)
dp[j]=dp1[j],dp1[j]=;
}
for(int i=;i<=sum;i++)
if(dp[i])
{
printf("%d\n",(sum+i)/*);
break;
}
}
return ;
}

ACM-ICPC 2019 西安邀请赛 D.Miku and Generals(二分图+可行性背包)的更多相关文章

  1. 2019 ICPC 陕西西安邀请赛 D. Miku and Generals

    传送门:https://nanti.jisuanke.com/t/39271 题意: 给你n个人,每个人有一个权值 a_i ​,(a_i​是可以被100整除的))现在需要你将n个人分成两组,有m个关系 ...

  2. 2019 ACM/ICPC Asia Regional shanxia D Miku and Generals (二分图黑白染色+01背包)

    Miku is matchless in the world!” As everyone knows, Nakano Miku is interested in Japanese generals, ...

  3. 西安区域赛 D.Miku and Generals 二分图+背包

    Miku and Generals Describe "Miku is matchless in the world!" As everyone knows, Nakano Mik ...

  4. 2014嘉杰信息杯ACM/ICPC湖南程序设计邀请赛暨第六届湘潭市程序设计竞赛

    比赛链接: http://202.197.224.59/OnlineJudge2/index.php/Contest/problems/contest_id/36 题目来源: 2014嘉杰信息杯ACM ...

  5. [多校联考2019(Round 5 T2)]蓝精灵的请求(二分图染色+背包)

    [多校联考2019(Round 5)]蓝精灵的请求(二分图染色+背包) 题面 在山的那边海的那边住着 n 个蓝精灵,这 n 个蓝精灵之间有 m 对好友关系,现在蓝精灵们想要玩一个团队竞技游戏,需要分为 ...

  6. 2017 ACM/ICPC(西安)赛后总结

    早上8:00的高铁,所以不得不6点前起床,向火车站赶……到达西安后已经是中午,西工大距离西安北站大概3小时车程的距离,只好先解决午饭再赶路了……下午3.30的热身赛,一行人在3.35左右赶到了赛场,坐 ...

  7. XTU OJ 1209 Alice and Bob 2014(嘉杰信息杯ACM/ICPC湖南程序设计邀请赛暨第六届湘潭市程序设计竞赛)

    Problem Description The famous "Alice and Bob" are playing a game again. So now comes the ...

  8. 2019 西安邀请赛 D

    //n件物品,m种关系,(有关系的2个不能在同一组) //把所有物品分为2组,希望最后2组的差值尽可能小,输出较大者 /* 二分图涂色+可行性(01)背包 dp[i] =1表示 最后差值为i可行 建图 ...

  9. 2019 西安邀请赛 M

    Problem Description There are n planets ∼n. Each planet is connected to other planets through some t ...

随机推荐

  1. 19-11-08-Night

    再咕咕咕会被爆捶吗??? ZJ: 喜闻乐见: 27 Miemeng 60 01:59:43 100 01:59:44 0 01:59:44 160 01:59:44 最水的$T1$挂了???? $T2 ...

  2. android Serializable 和 Parcelable 区别

      android 中自定义的对象序列化的问题有两个选择一个是Parcelable,另外一个是Serializable. 一 序列化原因: 1.永久性保存对象,保存对象的字节序列到本地文件中:2.通过 ...

  3. 菜鸟nginx源码剖析数据结构篇(七) 哈希表 ngx_hash_t(下)[转]

    菜鸟nginx源码剖析数据结构篇(七) 哈希表 ngx_hash_t(下) Author:Echo Chen(陈斌) Email:chenb19870707@gmail.com Blog:Blog.c ...

  4. SPSS应用之非参数检验

    SPSS应用之非参数检验 统计学的假设检验可以分为参数检验和非参数检验,参数检验是根据一些假设条件推算而来,当这些假设条件无法满足的时候,参数检验的效能会大打折扣,甚至出现错误的结果,而非参数检验通常 ...

  5. 02_jQuery对象初识(二)筛选器1

    0. HTML对象和jQuery对象的区别: 1.jQuery对象转换成DOM对象,用索引取出具体的标签 2.DOM对象转换成jQuery对象,$(DOM对象) 注意:jQuery对象保存到变量的时候 ...

  6. BigNum模板

    #include<iostream> #include<cstring> #include<iomanip> #include<algorithm> u ...

  7. PKU--1267 Cash Machine(多重背包)

    题目http://poj.org/problem?id=1276 分析 这是一个多重背包的问题,可以把请求的金额当作背包的重量,而货币的面值就是价值又是重量. 于是这个问题便很好理解背包了. #];; ...

  8. windows API 第八篇 _tcsicmp _stricmp _wcsicmp _mbsicmp

    这些函数都是比较字符串小写的,忽略大写,出入的字符串都将按照小写比较Perform a lowercase comparison of strings. 函数原型: int _stricmp( con ...

  9. IOS开发之基础oc语法

    类 1.类的定义: 类=属性+方法: -属性代表类的特征 -方法是类能对变化做出的反应 类定义的格式:类的声明和类的实现组成 -接口(类的声明):@interface 类名:基类的名字 .类名首字母要 ...

  10. light oj 1071 dp(吃金币升级版)

    #include <iostream> #include <algorithm> #include <cstring> #include <cstdio> ...