模拟退火
题号:NC249317
时间限制:C/C++/Rust/Pascal 2秒,其他语言4秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

给定一张n个点,m条边的图,你可以进行如下两种操作:
1.选择一条边并删掉,这个操作代价为a
2.选择一个点并删掉与之关联的所有边,这个操作代价为b

你希望以最小的代价删掉图中所有的边。请你输出这个最小代价。

输入描述:

第一行一个正整数T(1\le T\le 10),表示数据组数。对于每组数据:
第一行n,m,a,b(1\le n,m\le40 , 1\le a,b \le 10^7),代表图的点数和边数,和删掉边和点的代价。
接下来m行,每行两个正整数u,v(1\le u,v \le n),代表图上的一条边。

图中可能存在重边和自环。

输出描述:

对于每组数据,一行一个正整数表示答案。
示例1

输入

复制
3
5 5 3 2
1 2
2 2
1 4
2 4
3 5
4 5 3 4
1 4
1 3
1 2
2 4
3 4
5 6 6 7
1 2
3 4
4 5
5 2
3 3
1 4

输出

复制
6
8
20