#P16436. pm16500奇环探测器

pm16500奇环探测器

题目背景

一座城市的交通监察系统把各个路口抽象成无向图中的顶点,把双向道路抽象成边。监察员尤其关注那些位于“奇数长度环线”上的路口,因为这些环线往往会给路线规划和二分调度带来特殊影响。

为了让检查结果可以被复核,系统不仅要判断每个路口是否位于某个奇环上,还要为每个满足条件的路口给出一条包含它的奇环,作为证明证书。

题目描述

给定一个含有 NN 个顶点的无向简单图,顶点编号为 0,1,,N10,1,\ldots,N-1

一个简单奇环是一个顶点序列

V0,V1,,VL1,V_0,V_1,\ldots,V_{L-1},

满足:

  • L3L\ge 3
  • LL 为奇数;
  • 序列中的所有顶点互不相同;
  • 对所有 0i<L10\le i<L-1,顶点 ViV_iVi+1V_{i+1} 之间有边;
  • 顶点 VL1V_{L-1}V0V_0 之间有边。

若顶点 ii 位于至少一个简单奇环上,则称顶点 ii幸福的。你需要对每个顶点输出:

  • 若它不幸福,输出 0
  • 若它幸福,输出任意一条包含该顶点的简单奇环。

答案可能不唯一。

输入格式

第一行包含一个整数 NN,表示顶点数量。

接下来 NN 行,每行一个长度为 NN 的字符串 GiG_i,描述图的邻接矩阵:

  • Gi[j]G_i[j]Y 时,顶点 ii 与顶点 jj 之间有边;
  • Gi[j]G_i[j]N 时,顶点 ii 与顶点 jj 之间没有边。

输出格式

输出 NN 行,第 ii 行描述顶点 ii 的证书。

  • 若顶点 ii 不在任何简单奇环上,输出一个整数 0
  • 否则,先输出一个奇数 LL,再输出 LL 个互不相同的顶点编号 V0,V1,,VL1V_0,V_1,\ldots,V_{L-1},表示一个包含顶点 ii 的简单奇环。

即幸福顶点对应行的格式为:

L V_0 V_1 ... V_{L-1}

输出的环可以从任意顶点开始,也可以选择任意方向。

本题为多解构造题,评测时需要使用特殊评测程序(SPJ)。整理包按要求不附带 SPJ。

样例 1

输入

4
NYNN
YNYN
NYNY
NNYN

输出

0
0
0
0

说明

该图是一条路径 01230-1-2-3,不存在任何环,因此所有顶点都不幸福。

样例 2

输入

4
NYNN
YNYY
NYNY
NYYN

输出

0
3 3 2 1
3 3 2 1
3 3 2 1

说明

顶点 1,2,31,2,3 构成一个长度为 33 的奇环;顶点 00 不位于任何奇环上。

样例 3

输入

4
NYYY
YNYN
YYNY
YNYN

输出

3 2 1 0
3 2 1 0
3 2 1 0
3 0 3 2

说明

每个顶点都位于某个奇环上,但它们不一定需要使用同一条奇环作为证书。

数据范围

对于所有测试数据:

1N50.1\le N\le 50.

邻接矩阵还满足:

  • Gi[i]=NG_i[i]=\texttt{N}
  • Gi[j]=Gj[i]G_i[j]=G_j[i]
  • 每个字符均为 YN