Quản Lý Thư Mục


Submit solution

Points: 4
Time limit: 0.5s
Memory limit: 30M

Author:
Problem type
Allowed languages
Ada, Assembly, Awk, C, C++, C11, CLANG, CLANGX, Classical, COBOL, Coffee, CSC, D lang, DART, F95, FORTH, Fortrn, GAS32, GO, Haskell, Itercal, Java, kotlin, LEAN, LISP, LUA, MONOVB, Nasm, OCAML, Pascal, Perl, php, PIKE, prolog, Pypy, Python, Ruby 2, RUST, Scala, SCM, SED, SWIFT, TCL, TUR, V8JS, VB, ZIG

Hệ điều hành máy tính sử dụng một đơn vị tổ chức có tên là thư mục vụn hè để sắp xếp các thư mục và tệp thành một cấu trúc phân cấp.

Một thư mục chứa nhiều tệp và các thư mục khác, và nó cung cấp cho người dùng một nhóm tệp logic.

 

Một thư mục sử dụng / như một ký tự phân cách và hiển thị đường dẫn của nó trong hệ thống thư mục.

/ Có thể đại diện cho một thư mục gốc hoặc một mối quan hệ phân cấp giữa các thư mục cha và thư mục con.

Chẳng hạn, đường dẫn / aa / bb / chỉ ra rằng trong thư mục gốc có thư mục của / aa /, bên dưới là thư mục / bb /.

 

Có nhiều tính năng khác nhau liên quan đến một thư mục, nhưng bạn sẽ thực hiện 5 tính năng sau trong vấn đề này:

  • Tạo một thư mục

  • Xóa một thư mục

  • Sao chép một thư mục

  • Di chuyển một thư mục

  • Kiểm tra số lượng thư mục con

  Viết một trương trình thực hiện các tính năng thư mục trên.

Hãy thử sức với việc không sử dụng bất kỳ cấu trúc dữ liệu / thư viện có sẵn nào (kể cả string).

Input:

  • Dòng đầu tiên là số test case \(T ( 1 \le T \le 50)\)
  • Dòng thứ 2 gồm 2 số nguyên \(N \) : số thư mục tối đa có thể có, \(M\) : số truy vấn \(( 5 \le N \le 50000 , 5 \le M \le 50000 )\)
  • M dòng tiếp theo mỗi dòng là một lệnh truy vấn theo quy tắc sau :
    • Nếu số đầu là 1 : tiếp theo sẽ là 2 xâu PATHNAME với chức năng tạo một thư mục tên là NAME tại đường dẫn PATH
    • Nếu số đầu là 2 : tiếp theo sẽ là 1 xâu PATH với chức năng xóa một thư mục với đường dẫn PATH
    • Nếu số đầu là 3 : tiếp theo sẽ là 2 xâu srcPATHdstPATH với chức năng sao chép thư mục với đường dẫn srcPATH và tất cả các thư mục con của nó vào đường dẫn dstPATH
    • Nếu số đầu là 4 : tiếp theo sẽ là 2 xâu srcPATHdstPATH với chức năng di chuyển thư mục với đường dẫn srcPATH và tất cả các thư mục con của nó vào đường dẫn dstPATH
    • Nếu số đầu là 5 : tiếp theo sẽ là 1 xâu PATH với chức năng kiểm tra số lượng thư mục con của thư mục có đường dẫn PATH
    • Độ dài của các đường dẫn lớn hơn 0 và bé hơn 2000
    • Độ dài của tên thư mục lớn hơn 0 và bé hơn 7
    • Một thư mục có tối đa 30 thư mục con
    • Các đường dẫn đươc đảm bảo luôn tồn tại trong hệ thống.

Output:

  • với thao tác kiểm tra số lượng in ra số thư mục con (tất cả các thư mục nằm bên dưới đường dẫn PATH) trên mỗi dòng

Example:

Input:

1
7 11
1 / aa
1 / bb
1 /aa/ cc
1 /bb/ dd
3 /bb/ /aa/
4 /aa/cc/ /
5 /
4 /bb/ /cc/
5 /cc/
2 /cc/
5 /

Output:

6
2
3

Giải thích

    root                        root                          root                     root                root
      |                          |                             |                        |                   |
aa ------- bb     =>        aa ------- bb      =>      aa ---- bb ---- cc    =>     aa ---- cc    =>        aa
|          |                |          |               |       |                    |       |               |
cc         dd           cc ---- bb     dd              bb      dd                   bb      bb              bb
                                |                      |                            |       |               |
                                dd                     dd                           dd      dd              dd

Comments


  • 1
    TICHPX  commented on Nov. 5, 2019, 5:01 p.m.

    Cấu trúc dữ liệu cây


    • 2
      cotyey  commented on Nov. 6, 2019, 12:33 a.m.

      em để ở problem type là tree r ko biết có ai làm ko :D