题目
终究是题目没有读清,而且父目录和子目录之间的关系,联系树,一定要清楚什么是父亲,什么是祖先,什么是儿子。这道题目就是模拟题,太悲伤了。
#include <bits/stdc++.h>
using namespace std;
#define T int T; scanf("%d", &T); while(T--)
int n, m;
vector<string> v;
set<string> part, vis;
int main()
{
T{
v.clear();
part.clear();
vis.clear();
scanf("%d%d", &n, &m);
string str;
for(int i=0; i<n; i++){
cin>>str;
v.push_back(str);
}
for(int i=0; i<m; i++){
cin>>str;
string s="";
for(int j=0; j<(int)str.length(); j++){
if(str[j]=='/')
part.insert(s);
s+=str[j];
}
}
int ans=n;
for(int i=0; i<n; i++){
string s="";
for(int j=0; j<(int)v[i].length(); j++){
if(v[i][j]=='/'){
if(!part.count(s)){
if(vis.count(s)){
ans-=1;
} else {
vis.insert(s);
}
break;
}
}
s+=v[i][j];
}
}
printf("%d\n", ans);
}
return 0;
}