【bzoj2400】Spoj 839 Optimal Marks

2014年12月27日2,2042

Description

定义无向图中的一条边的值为:这条边连接的两个点的值的异或值。
定义一个无向图的值为:这个无向图所有边的值的和。
给你一个有n个结点m条边的无向图。其中的一些点的值是给定的,而其余的点的值由你决定(但要求均为非负数),使得这个无向图的值最小。在无向图的值最小的前提下,使得无向图中所有点的值的和最小。

Input

第一行,两个数n,m,表示图的点数和边数。
接下来n行,每行一个数,按编号给出每个点的值(若为负数则表示这个点的值由你决定,值的绝对值大小不超过10^9)。
接下来m行,每行二个数a,b,表示编号为a与b的两点间连一条边。(保证无重边与自环。)

Output

    第一行,一个数,表示无向图的值。
    第二行,一个数,表示无向图中所有点的值的和。

Sample Input

3 2
2
-1
0
1 2
2 3

Sample Output

2
2

HINT

数据约定
n<=500,m<=2000
样例解释
2结点的值定为0即可。

题解

考虑用最小割解决问题,考虑二进制每一位

设残量网络中S可到达的点为0,可到达T的点为1

显然S到确定为0的点连inf,确定为1的点向T连inf

然后再建给出的无向边。。。

 

 

 

  • 婷小葵葵葵2015年7月15日 下午4:12 回复

    这样做有没有可能最后的值大于1e9?

    #1  
    • hzwer2015年7月16日 下午7:50 回复
      admin

      有可能~

      #11