{"trustable":true,"prependHtml":"\u003cstyle type\u003d\"text/css\"\u003e\n div.illustration {\n float: right;\n padding-left: 20px;\n }\n div.illustration .illustration {\n width: 100%;\n border-radius: 4px;\n }\n pre {\n display: block;\n margin: 0 0 10px;\n font-size: 13px;\n line-height: 1.42857143;\n color: #333;\n word-break: break-all;\n word-wrap: break-word;\n }\n\u003c/style\u003e\n\u003cscript\u003e\n window.katexOptions \u003d {\n delimiters: [\n {left: \u0027\\\\[\u0027, right: \u0027\\\\]\u0027, display: true}\n ]\n };\n\u003c/script\u003e\n","sections":[{"title":"","value":{"format":"HTML","content":"\u003cdiv style\u003d\"width:40.00%\" class\u003d\"illustration\"\u003e\n \u003cimg src\u003d\"CDN_BASE_URL/97de6c3d979b594c63ed47a34f264cc0?v\u003d1709882460\" alt\u003d\"/problems/importspaghetti/file/statement/en/img-0001.png\" class\u003d\"illustration\"\u003e\n\n \n \u003c/div\u003e你刚从编程学校毕业并且成功地找到了一份Python编程工作。工作的第一天,你意识到你继承了一团糟。前任维护者选择了“意大利面”设计模式,而这位前任最近逃离了这个国家。你试图理清代码,但立刻发现不同的文件之间存在循环依赖。事实上,还没有尝试过测试代码,甚至运行代码。\n\n \u003cp\u003e当你坐下来思考时,你决定首先要做的事情是消除依赖图中的循环。所以你开始寻找最短的依赖循环。\u003c/p\u003e\n\n \u003ch2\u003e输入\u003c/h2\u003e\n\n \u003cp\u003e输入的第一行包含一个数字 \u003cspan class\u003d\"tex2jax_process\"\u003e$n$\u003c/span\u003e, \u003cspan class\u003d\"tex2jax_process\"\u003e$1\n \\le n \\le 500$\u003c/span\u003e,表示文件的数量。接下来是一行,包含 \u003cspan class\u003d\"tex2jax_process\"\u003e$n$\u003c/span\u003e 个不同的文件名。每个文件名是一个字符串,至少包含 \u003cspan class\u003d\"tex2jax_process\"\u003e$1$\u003c/span\u003e 个字符,最多包含 \u003cspan class\u003d\"tex2jax_process\"\u003e$8$\u003c/span\u003e 个小写字母 ‘\u003ctt class\u003d\"ttfamily\"\u003ea\u003c/tt\u003e’ 到 ‘\u003ctt class\u003d\"ttfamily\"\u003ez\u003c/tt\u003e’。然后按照它们在第二行给出的顺序,依次列出 \u003cspan class\u003d\"tex2jax_process\"\u003e$n$\u003c/span\u003e 个部分,每个部分对应一个文件名。每个部分以包含文件名和一个整数 \u003cspan class\u003d\"tex2jax_process\"\u003e$k$\u003c/span\u003e 的一行开头,然后是 \u003cspan class\u003d\"tex2jax_process\"\u003e$k$\u003c/span\u003e 行,每行以“\u003ctt class\u003d\"ttfamily\"\u003eimport\u003c/tt\u003e”开头。\u003c/p\u003e\n\n \u003cp\u003e每个“\u003ctt class\u003d\"ttfamily\"\u003eimport\u003c/tt\u003e”行都是以逗号和空格分隔的依赖项列表。没有文件会多次导入同一个文件,而且每个被导入的文件都会在输入的第二行中列出。逗号和空格分隔意味着每行都以“\u003ctt class\u003d\"ttfamily\"\u003eimport\u003c/tt\u003e”开头,然后是由 \u003ctt class\u003d\"ttfamily\"\u003e“, ”\u003c/tt\u003e 分隔的文件名列表(请参考示例输入以获取示例)。每个导入语句后面至少跟着一个文件名。\u003c/p\u003e\n\n \u003ch2\u003e输出\u003c/h2\u003e\n\n \u003cp\u003e如果代码库没有循环依赖,输出“\u003ctt class\u003d\"ttfamily\"\u003eSHIP IT\u003c/tt\u003e”。否则,输出一个包含最短循环中文件名的行,按照循环的顺序列出(即,第 \u003cspan class\u003d\"tex2jax_process\"\u003e$i$\u003c/span\u003e 个列出的文件必须导入第 \u003cspan class\u003d\"tex2jax_process\"\u003e$(i+1)$\u003c/span\u003e 个列出的文件,最后一个列出的文件必须导入第一个文件)。如果存在多个最短循环,任何一个都将被接受。\u003c/p\u003e\n\n \u003ch2\u003e示例 1\u003c/h2\u003e\u003ctable class\u003d\"vjudge_sample\"\u003e\n\u003cthead\u003e\n \u003ctr\u003e\n \u003cth\u003eInput\u003c/th\u003e\n \u003cth\u003eOutput\u003c/th\u003e\n \u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n \u003ctr\u003e\n \u003ctd\u003e\u003cpre\u003e4\na b c d\na 1\nimport d, b, c\nb 2\nimport d\nimport c\nc 1\nimport c\nd 0\n\u003c/pre\u003e\u003c/td\u003e\n \u003ctd\u003e\u003cpre\u003ec\n\u003c/pre\u003e\u003c/td\u003e\n \u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\n\n \u003ch2\u003e示例 2\u003c/h2\u003e\u003ctable class\u003d\"vjudge_sample\"\u003e\n\u003cthead\u003e\n \u003ctr\u003e\n \u003cth\u003eInput\u003c/th\u003e\n \u003cth\u003eOutput\u003c/th\u003e\n \u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n \u003ctr\u003e\n \u003ctd\u003e\u003cpre\u003e5\nclassa classb myfilec execd libe\nclassa 2\nimport classb\nimport myfilec, libe\nclassb 1\nimport execd\nmyfilec 1\nimport libe\nexecd 1\nimport libe\nlibe 0\n\u003c/pre\u003e\u003c/td\u003e\n \u003ctd\u003e\u003cpre\u003eSHIP IT\n\u003c/pre\u003e\u003c/td\u003e\n \u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\n\n \u003ch2\u003e示例 3\u003c/h2\u003e\u003ctable class\u003d\"vjudge_sample\"\u003e\n\u003cthead\u003e\n \u003ctr\u003e\n \u003cth\u003eInput\u003c/th\u003e\n \u003cth\u003eOutput\u003c/th\u003e\n \u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n \u003ctr\u003e\n \u003ctd\u003e\u003cpre\u003e5\nclassa classb myfilec execd libe\nclassa 2\nimport classb\nimport myfilec, libe\nclassb 1\nimport execd\nmyfilec 1\nimport libe\nexecd 1\nimport libe, classa\nlibe 0\n\u003c/pre\u003e\u003c/td\u003e\n \u003ctd\u003e\u003cpre\u003eclassa classb execd\n\u003c/pre\u003e\u003c/td\u003e\n \u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e"}}]}