关注
贴一个我的,思路也是用邻接表保存节点的string和他自身是哪一个节点,然后串在每个父节点后面最后dfs。就是前缀的那些符号条件要仔细考虑。 #include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
void DFS(vector<vector<pair<string,int>>> &dir, int root, string mask) {
string next_mask;
for (int i = 0; i < dir[root].size(); ++i) {
pair<string, int> node = dir[root][i];
cout << mask;
if (i != dir[root].size() - 1) {
cout << "|-- ";
}
else {
cout << "`-- ";
}
cout << node.first << endl;
if (i == dir[root].size() - 1)
{
next_mask = " " + mask;
}
else {
next_mask = mask + "| ";
}
DFS(dir, node.second, next_mask);
}
}
bool cmp(pair<string, int> a, pair<string, int> b) {
return a.first < b.first;
}
int main() {
int n;
cin >> n;
vector<vector<pair<string,int>>> dir(n + 1);
for (int i = 0; i < n; ++i) {
string node_s;
int fa_idx;
pair<string, int> node;
cin >> node_s >> fa_idx;
node.first = node_s;
node.second = i+1;
dir[fa_idx + 1].push_back(node);
}
for (int i = 0; i < dir.size(); ++i) {
sort(dir[i].begin(), dir[i].end(),cmp);
}
cout << dir[0][0].first << endl;
DFS(dir, 1, "");
return 0;
}
查看原帖
点赞 1
相关推荐
点赞 评论 收藏
分享
03-26 22:55
门头沟学院 Java 点赞 评论 收藏
分享

点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 面试问题记录 #
75061次浏览 1066人参与
# 工作中,你有没有遇到非常爱骂人的领导? #
20818次浏览 145人参与
# 京东TGT #
54665次浏览 188人参与
# 上班到公司第一件事做什么? #
41210次浏览 383人参与
# 硬件人的简历怎么写 #
258059次浏览 2901人参与
# 求职季如何保持心态不崩 #
107823次浏览 887人参与
# 找工作的破防时刻 #
2606次浏览 41人参与
# 工作时那些社死瞬间 #
26485次浏览 199人参与
# 拼多多工作体验 #
18162次浏览 153人参与
# 互联网行业现在还值得去吗 #
7716次浏览 42人参与
# 技术转行的心路历程 #
48807次浏览 665人参与
# 选完offer后,你后悔学本专业吗 #
39152次浏览 217人参与
# 你觉得技术面多长时间合理? #
87577次浏览 647人参与
# 国企和大厂硬件兄弟怎么选? #
121317次浏览 1657人参与
# 你遇到过哪些神仙同事 #
75864次浏览 668人参与
# 安利/避雷我的专业 #
67421次浏览 497人参与
# 面试经验谈 #
51248次浏览 821人参与
# 实习生应该准时下班吗 #
204112次浏览 1329人参与
# 米哈游求职进展汇总 #
323413次浏览 2224人参与
# 面试吐槽bot #
18910次浏览 109人参与
# 工作一周年分享 #
20520次浏览 113人参与