这题主要的思路是用map存放目录名,值对应两个向量,分别存放目录和文件的名字。
```cpp
#include<cstdio>
#include<iostream>
#include<vector>
#include<cstring>
#include<map>
using namespace std;
struct dir{
vector<string> dirs;
vector<string> fils;
};
int main(){
int t;
cin>>t;
while(t--){
int n;
cin>>n;
map<string,dir> mymap;
dir root;
mymap.insert(pair<string,dir>("root",root));
while(n--){
string op;
cin>>op;
if(op=="CREATEFILE"){
string filName,dirName;
cin>>filName>>dirName;
dir tmp;
mymap[dirName].fils.push_back(filName);
}else if(op=="CREATEDIR"){
string dirName1,dirName2;
cin>>dirName1>>dirName2;
mymap[dirName2].dirs.push_back(dirName1);
}else if(op=="LISTFILE"){
string dirname;
cin>>dirname;
vector<string> files = mymap[dirname].fils;
for(int i=0;i<files.size();i++){
cout<<files[i]<<endl;
}
}else if(op=="LISTDIR"){
string dirname;
cin>>dirname;
vector<string> dirs = mymap[dirname].dirs;
for(int i=0;i<dirs.size();i++){
cout<<dirs[i]<<endl;
}
}
}
}
}