#P9187. 树分解(宽度 2) (Tree Decomposition (Width 2))
树分解(宽度 2) (Tree Decomposition (Width 2))

树分解(宽度 2)
(Tree Decomposition (Width 2))
问题描述
给定一个简单无向图,含 个顶点和 条边。第 条边为 。
判断该图的树宽是否 。
若是,构造一个宽度不超过 2 的树分解:即一棵含 个节点的树,每个节点是一个“包”(bag)——原图顶点的子集,满足:
- 每条边 至少被一个包包含(即存在某个包含 和 );
- 对每个原图顶点 ,所有包含 的包在树中构成连通子树;
- 每个包的大小 (因宽度 = 最大包大小 ,故宽度 包大小 )。
约束条件
- 图是简单的(无自环、无重边)
输入
:
注:输入首行为
p tw N M,其中p和tw为固定字符串(参考 PACE 2017 Track A 格式), 为顶点数与边数;后续 行为边,顶点编号为 1-indexed。
输出
- 若树宽 :输出一行
-1 - 否则:输出树分解,格式如下:
s td K w N b 1 v ... v b 2 v ... v ... b K v ... v a 1 b 1 a 2 b 2 ... a_{K-1} b_{K-1}
其中:
s td K w N:K是包的数量,w是树分解的宽度(应为 0、1 或 2),N是原图顶点数;b i v ... v:第 个包包含的顶点(1-indexed,按任意顺序);a i j:树中第 条边连接包 与包 (1-indexed);- 每个包大小 ;
- 顶点编号均为 1-indexed。
p tw 5 6
1 2
2 3
3 4
4 5
2 4
4 1
s td 5 2 5
b 1 5
b 2 4 5
b 3 3 4
b 4 2 3 4
b 5 1 2 4
1 2
2 3
3 4
4 5
p tw 4 6
1 2
1 3
1 4
2 3
2 4
3 4
-1