#P1048. 文件格式

文件格式

题目描述

NOIP(全国青少年信息学奥林匹克竞赛)自 1995 年开始举办,每年由中国计算机学会统一组织。选手在比赛中提交代码时,要按照以下格式进行提交:根文件夹命名为 BJ-01,指的是选手的地区和考号。task1 task2 task3 也是文件夹,指的是题目的名称。例如第一道题的题目叫作 task1,则需要在 BJ-01 文件夹下创建一个 task1 的文件夹。在文件夹里放入自己的代码文件,命名为 task1.cpp;

示例如图:

现在已知考试共有 4 道题目,你得到了一个选手提交的最终文件夹,现在你需要判定他的提交格式是否正确。格式正确的判定标准:

  1. 根目录是地区 + 考号,你可以认为根目录必须同时包含字母(大写或小写字母均可)和数字两种字符,且字母在前,数字在后。(A2B 这种字母与数字交替的情况也不符合要求,而 BJ01,BJJJ0001 都是符合要求的)根目录只能有一个。
  2. 第二级目录有 4 个文件夹,分别对应每道题目。你可以认为题目名一定为纯字母。(上图中的 task1 task2 仅为示例,实际上题目名称不会出现 1 2 等数字)
  3. 每一个题目文件夹中包含一个 .cpp 文件,即你可以认为所有选手都使用 C++ 完成代码。.cpp 文件的名称必须和题目名称相同。
  4. 本题中只需判断文件名是否正确,无需判断文件类型。即如果选手在 task 文件夹中放入了一个命名为 task.cpp 的文件夹,我们也认为他的格式是正确的。但假如 task.cpp 文件夹里面还有其他文件(即存在第四层目录),则格式错误。

输入格式

输入第一行包含一个正整数 tt,表示 t(1t100)t(1 \leq t \leq 100) 组数据。

每组数据首先给出一行一个正整数 n(1n10)n(1 \leq n \leq 10),表示文件关系的数量。

接下来包含 nn 行,每行给出两个长度不超过 20 的字符串 A BA \ B,代表 BBAA 文件夹的子文件。保证每组数据给出的信息不会重复(即不会有同名文件出现在目录中的不同位置)且每次给出的字符串 AABB 不相同。字符串中可能包含大写字母,小写字母,数字以及 - . ( ) 这四种特殊字符中的某几种。

输出格式

输出 tt 行,每行输出一个 yesno 表示文件格式是否符合标准。

5
2
BJ01 task
task task.cpp
8
task task.cpp
bJ01 task
bJ01 apple
apple apple.cpp
bJ01 Banana
Banana Banana.cpp
bJ01 candy
candy candy.cpp
8
123 task
task task.cpp
123 plane
plane plane.cpp
123 banana
banana banana.cpp
123 candy
candy candy.cpp
8
BJ01 task
task task.cpp
BJ01 apple
apple banana.cpp
BJ01 banana
banana apple.cpp
BJ01 candy
candy candy.cpp
8
BJ01 task
task task.cpp
BJ01 apple
apple apple.cpp
BJ01 banana
banana banana.cpp
BJ01 candy
candy candy.cpp.cpp
no
yes
no
no
no

说明

样例 1 的题目数量不够,只有 1 道题。

样例 2 正确。

样例 3 根目录的名称不是字母 + 数字的组合,只有数字没有字母。

样例 4 中的 apple 文件夹包含了 banana.cpp,代码文件的命名与题目命名不一致。

样例 5 中最后一行的 candy 文件夹包含了 candy.cpp.cpp 文件,命名有误,多了一个 .cpp。

测试点信息

性质 1:根目录只有一个且根目录的名称满足条件

性质 2:所有文件名均符合要求(只可能是第二级目录或根目录的数量出错)

性质 3:目录一定只有 3 级

测试点编号 具有性质
1 1.2.3
2 1.3
3 2
4-5 无特殊性质