#lg3561. [POI 2017] Turysta

[POI 2017] Turysta

[AdditionalFile4912.zip](file://AdditionalFile4912.zip?type=additional_file)

P3561 [POI 2017] Turysta

题目描述

给出一个 nn 个点的有向图,任意两个点之间有且仅一条有向边。

对于每个点 vv,求出从 vv 出发的一条经过点数最多,且没有重复经过同一个点两次及两次以上的简单路径。

输入格式

第一行包含一个正整数 nn,表示点数。

接下来的 n−1n-1 行,其中的第 ii 行有 i−1i-1 个数。

如果第 jj 个数是 11,那么表示有向边 j→i+1j\rightarrow i+1 ,如果是 00,那么表示有向边 j←i+1j\leftarrow i+1。

输出格式

输出 nn 行,第 ii 行首先包含一个正整数 kk,表示从 ii 点出发的最优路径所经过的点数。

接下来 kk 个正整数,依次表示路径上的每个点。

若有多组最优解,输出任意一组。

本题使用 SPJ (Claris 制作)

输入输出样例 #1

输入 #1

4
1
1 1
1 0 1

输出 #1

4 1 2 3 4
3 2 3 4
3 3 4 2
3 4 2 3

说明/提示

对于 100%100\% 的数据,2≤n≤2×1032\le n\le 2 \times 10^3。

#4912. 「POI2017 R1」游客 Tourist

标签: 传统 | 时间限制: 8000 ms | 内存限制: 128 MiB |

题目描述

题目译自 XXIV Olimpiada Informatyczna — I etap Turysta

字节城曾经是个美丽、交通便利的国家,每座城市之间都有双向直达道路。可惜,比特城发动战争,用「比特城极化磁铁」把所有道路变成了单向。战争虽已结束,但磁铁的影响让字节城的交通陷入混乱。

著名旅行家朗金特先生战前计划游遍字节城所有城市。现在这可能行不通,他只能尽量多逛几座城。请你写个程序,为他从每座可能的起点城市规划一条路线,尽可能多地游览不同城市,且每座城只经过一次。假设朗金特先生可在任意城市结束旅程。

输入格式

输入第一行是一个整数 nn (2≤n≤2000)(2 \leq n \leq 2000),表示字节城的城市数量,城市编号从 11 到 nn。

接下来的 n−1n-1 行描述当前道路状况。第 ii 行描述编号为 i+1i+1 的城市与之前所有城市的连接,包含 ii 个数字(00 或 11)。若第 jj 个数是 11,则道路从 jj 号城市通向 i+1i+1 号城市;若为 00,则方向相反,从 i+1i+1 到 jj。

输出格式

输出 nn 行,第 ii 行描述从 ii 号城市出发、访问最多不同城市(每城仅一次)的路线。

每行开头是一个整数 d≥1d \geq 1,表示路线上的城市数,后面跟 dd 个整数,表示朗金特先生依次访问的城市编号。若有多条最长路线,输出任意一条即可。

样例

输入

4
1
1 1
1 0 1

输出

4 1 2 3 4
3 2 3 4
3 3 4 2
3 4 2 3

附加样例

  1. n=3n=3,形成环路;
  2. n=2000n=2000,每条路都指向编号较小的城市。

数据范围与提示

详细子任务附加限制及分值如下表所示。

子任务 附加限制 分值
11 n≤8n \leq 8 2727
22 从每座起点城都能不重复游遍全国 3030
33 无附加限制 4343