#Lutece3387. 炼金术士
炼金术士
Description
为了炼制贤者之石,耶芙娜正在精心布置她的炼金阵,炼金阵由 个点的无向完全图组成,即任意两个不同的点之间连有一条无向边。每一条边可以选择进行黑化,或者白化,或者不进行任何处理。
炼金阵对于黑化边与白化边构成的子图有一定的要求:
- 在黑化边和白化边各自构成的子图中,都不能出现三元环。即不存在三个点之间两两连边全部黑化或全部白化;
- 黑化边构成的子图中需要存在一条边数为 的无环链作为基底,这条链经过的 个点 将会在输入中给出,对于任意 ,炼金阵中 与 两个点的连边必须进行黑化。
在满足以上两个要求的同时,为了提高炼制的成功率,耶芙娜希望黑化边与白化边的数量之和尽可能大。作为耶芙娜的老板(兼宠物猫),你决定帮助她规划出一种黑化白化边数量之和最大的炼金阵图。
Input
第一行一个整数 (),表示测试数据组数。
对于每组数据,第一行输入两个整数 (, ),表示炼金阵点数与基底链的长度。第二行输入 个互不相同的整数 () ,表示黑化基底链经过的点的编号。
Output
对于每组数据,你需要输出 行。第一行输出黑化边与白化边数量之和的最大值。接下来 行每行输出一个由 +
, -
, 0
三种字符构成的字符串,分别表示黑化、白化和不做处理,第 行长度为 ,第 行第 个字符表示第 个点与第 个点连边的处理类型。
答案可能不唯一,你可以输出任意最优解,但需要保证输出中基底链上的边均为 +
,且 +
与 -
字符数量之和等于第一行输出的最大值。
Samples
3
4 2
1 2 3
5 4
1 3 5 2 4
6 5
1 2 3 4 5 6
6
+
-+
--+
10
-
+-
++-
-++-
14
+
-+
--+
+--+
0+--+
Resources
The 23rd UESTC Programming Contest Preliminary