fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. #define NAME_MAXLEN 6
  5. #define PATH_MAXLEN 1999
  6. #define pb push_back
  7.  
  8. map<string, vector<string>> dir;
  9.  
  10. void init(int n) {
  11. dir.clear();
  12. }
  13.  
  14. void cmd_mkdir(char path[PATH_MAXLEN + 1], char name[NAME_MAXLEN + 1]) {
  15. dir[path].pb(strcat(path, strcat(name, "/")));
  16. }
  17.  
  18. void dfs(string s){
  19. for (auto &a : dir[s]){
  20. dfs(a);
  21. a.clear();
  22. }
  23. }
  24.  
  25. void cmd_rm(char path[PATH_MAXLEN + 1]) {
  26. dfs(path);
  27. }
  28.  
  29. void cmd_cp(char srcPath[PATH_MAXLEN + 1], char dstPath[PATH_MAXLEN + 1]) {
  30.  
  31. }
  32.  
  33. void cmd_mv(char srcPath[PATH_MAXLEN + 1], char dstPath[PATH_MAXLEN + 1]) {
  34.  
  35. }
  36.  
  37. int cmd_find(char path[PATH_MAXLEN + 1]) {
  38.  
  39. return 0;
  40. }
  41.  
  42. #ifndef _CRT_SECURE_NO_WARNINGS
  43. #define _CRT_SECURE_NO_WARNINGS
  44. #endif
  45.  
  46. #include<stdio.h>
  47.  
  48. #define CMD_MKDIR 1
  49. #define CMD_RM 2
  50. #define CMD_CP 3
  51. #define CMD_MV 4
  52. #define CMD_FIND 5
  53.  
  54. #define NAME_MAXLEN 6
  55. #define PATH_MAXLEN 1999
  56.  
  57. extern void init(int n);
  58. extern void cmd_mkdir(char path[PATH_MAXLEN + 1], char name[NAME_MAXLEN + 1]);
  59. extern void cmd_rm(char path[PATH_MAXLEN + 1]);
  60. extern void cmd_cp(char srcPath[PATH_MAXLEN + 1], char dstPath[PATH_MAXLEN + 1]);
  61. extern void cmd_mv(char srcPath[PATH_MAXLEN + 1], char dstPath[PATH_MAXLEN + 1]);
  62. extern int cmd_find(char path[PATH_MAXLEN + 1]);
  63.  
  64. static bool run(int m) {
  65.  
  66. bool isAccepted = true;
  67. int cmd;
  68. char name[NAME_MAXLEN + 1];
  69. char path1[PATH_MAXLEN + 1], path2[PATH_MAXLEN + 1];
  70.  
  71. while (m--) {
  72.  
  73. scanf("%d", &cmd);
  74.  
  75. if (cmd == CMD_MKDIR) {
  76. scanf("%s%s", path1, name);
  77. cmd_mkdir(path1, name);
  78. }
  79. else if (cmd == CMD_RM) {
  80. scanf("%s", path1);
  81. cmd_rm(path1);
  82. }
  83. else if (cmd == CMD_CP) {
  84. scanf("%s%s", path1, path2);
  85. cmd_cp(path1, path2);
  86. }
  87. else if (cmd == CMD_MV) {
  88. scanf("%s%s", path1, path2);
  89. cmd_mv(path1, path2);
  90. }
  91. else {
  92. int ret;
  93. int answer;
  94.  
  95. scanf("%s", path1);
  96. ret = cmd_find(path1);
  97. scanf("%d", &answer);
  98.  
  99. isAccepted &= (ret == answer);
  100. }
  101. }
  102.  
  103. return isAccepted;
  104. }
  105.  
  106. int main(void) {
  107.  
  108. int test, T;
  109. int n, m;
  110.  
  111. // freopen("sample_input.txt", "r", stdin);
  112.  
  113. setbuf(stdout, NULL);
  114.  
  115. scanf("%d", &T);
  116.  
  117. for (test = 1; test <= T; ++test) {
  118.  
  119. scanf("%d%d", &n, &m);
  120.  
  121. init(n);
  122.  
  123. if (run(m)) {
  124. printf("#%d 100\n", test);
  125. }
  126. else {
  127. printf("#%d 0\n", test);
  128. }
  129.  
  130. // debug
  131. for (auto a : dir["/aa/"]){
  132. cout << a << ' ';
  133. } cout << '\n';
  134. }
  135.  
  136. return 0;
  137. }
Success #stdin #stdout 0s 5308KB
stdin
1
7 7
1 / aa
1 / bb
1 /aa/ cc
1 /aa/ bb
1 /aa/bb/ dd
1 /bb/ dd
2 /aa/
stdout
#1 100