P3496 [POI 2010] GIL-Guilds

题目描述

国王 Byteasar 面临一个严峻的问题。 两个相互竞争的贸易组织——裁缝行会(The Tailors Guild)和缝纫行会(The Sewers Guild)同时要求获得许可,在王国每个城镇设立办事处。 Byteotia 有 $n$ 个城镇。 其中一些城镇通过双向道路连接。 每个行会都要求: - 每个城镇必须设有本行会的办事处 - 或者该城镇必须直接连接到一个设有本行会办事处的城镇。 然而,国王怀疑其中有诈。他担心如果存在某个城镇同时设有两个行会的办事处,可能会导致服装垄断。 因此,他请求你的帮助。

输入格式

标准输入的第一行包含两个整数 $n$ ($n \leq 200000$) 和 $m$ ($m \leq 500000$),分别表示 Byteotia 的城镇数量和道路数量。 城镇编号为 $1$ 到 $n$。 接下来 $m$ 行描述道路:输入的第 $i+1$ 行描述第 $i$ 条道路;

输出格式

你的程序应在标准输出的第一行输出一个单词: - `TAK`(波兰语中的"是")——表示可以按照规则在城镇中设置办事处,或者 - `NIE`(波兰语中的"否")——表示无法满足条件。 如果答案是 `TAK`,则接下来的 $n$ 行应给出一种可行的办事处设置方案。因此第 $i+1$ 行应包含: - 字母 `K` —— 表示城镇 $i$ 应设有裁缝行会(The Tailors Guild)的办事处,或 - 字母 `S` —— 表示城镇 $i$ 应设有缝纫行会(The Sewers Guild)的办事处,或 - 字母 `N` —— 表示城镇 $i$ 不应设有任何行会的办事处。

说明/提示

题目spj贡献者@mengbierr 翻译:DeepSeek-R1