AcWing 5426. 文件路径
原题链接
中等
作者:
YAX_AC
,
2024-12-12 17:43:35
,
所有人可见
,
阅读 15
/*
superior记录每⼀个编号的上级编号,last记录每层⽂件的上级⽂件夹,root记录根⽂件夹,ans
中存储最后输出的⽂件访问路径。⽤map记录信息,注意带空格的整⾏字符串的输⼊需要⽤到getline,
并且在普通cin输⼊和整⾏getline输⼊的时候会需要⼀个getchar帮忙⼀下。
每次输⼊⼀个⽂件⽬录,先找到它有⼏个(I个)空格,然后记录⼀下它的上级信息,并且把它作为最新的
下⼀层的⽂件夹的上级⽬录。最后输⼊查找的⽬标,不在map⾥就表⽰没有,有的话就整理成题⽬所需
输出的顺序输出即可~
*/
#include<bits/stdc++.h>
using namespace std;
int n,k;
string s,root,ans;
map<string,string> superior;//存储所有文件的上级文件
map<int,string> last;//last记录每层⽂件的上级⽂件夹
int main()
{
cin>>n>>root;
last[1] = root;
superior[root] = root;
getchar();
for(int i = 1; i<n; i++)
{
int cnt;//空格数,判断是第几层
getline(cin,s);
cnt = 0;
while(s[cnt] == ' ') cnt++;
//cnt层数少,等级越高
superior[s.substr(cnt)] = last[cnt];
last[cnt+1] = s.substr(cnt);
}
cin>>k;
while(k--)
{
cin>>s;
if(!superior.count(s)) cout << "Error: " << s << " is not found.\n";
else
{
ans = "\n";
while(s!=root)
{
ans = "->"+s+ans;
s = superior[s];
}
cout<<root<<ans;
}
}
return 0;
}