#P16886. [SPOJ3900]MinCut Query

[SPOJ3900]MinCut Query

题目描述

给定一个带非负容量的无向图。

对于两个不同的顶点 s,ts,t,一个 sts-t 割是把所有顶点划分为两个集合,并保证 s,ts,t 分属不同集合。割的容量等于所有跨越两个集合的边的容量之和。

minCut(s,t)minCut(s,t) 为所有 sts-t 割中的最小容量。

现在有若干询问。每次给出一个整数 xx,请计算有多少个无序点对 (s,t)(s,t) 满足 minCut(s,t)xminCut(s,t)\le x

图中允许两个顶点之间存在多条边,也允许图不连通。

输入格式

第一行一个整数 TT,表示测试数据组数。

对于每组测试数据:

  1. 第一行两个整数 n,mn,m,表示顶点数和边数;
  2. 接下来 mm 行,每行三个整数 u,v,cu,v,c,表示一条连接 u,vu,v、容量为 cc 的无向边;
  3. 接下来一行一个整数 qq
  4. 接下来 qq 行,每行一个整数 xx,表示一次询问。

输出格式

对于每次询问输出一行,一个整数,表示满足条件的无序点对数量。

相邻两组测试数据的输出之间打印一个空行。

样例

1
5 0
1
0
10

数据范围

  • 数据组 1:T15T\le15n40n\le40m400m\le400q10q\le10
  • 数据组 2:T20T\le20n150n\le150m3000m\le3000q30q\le30
  • 边容量不超过 10610^6
  • 允许重边。