题目连接:uva 1556 - Disk Tree

题目大意:给出N个文件夹关系,然后依照字典序输出整个文件文件夹。

解题思路:以每一个文件夹名作为字符建立一个字典树就可以,每一个节点的关系能够用map优化。

#include <cstdio>
#include <cstring>
#include <map>
#include <string>
#include <iostream>
#include <algorithm> using namespace std;
const int maxn = 50005;
typedef map<string, int>::iterator iter; struct Tire {
int sz;
map<string, int> g[maxn]; void init();
void insert(string s);
void put(int u, int d);
}tree; int main () {
int n;
string s;
while (cin >> n && n) {
tree.init();
for (int i = 0; i < n; i++) {
cin >> s;
s += '\\';
tree.insert(s);
}
tree.put(0, 0);
cout << endl;
}
return 0;
} void Tire::init() {
sz = 1;
g[0].clear();
} void Tire::insert(string s) { int u = 0;
string word = ""; for (int i = 0; i < s.length(); i++) {
if (s[i] == '\\') { if (!g[u].count(word)) {
g[sz].clear();
g[u][word] = sz++;
} u = g[u][word];
word = "";
} else
word += s[i];
}
} void Tire::put (int u, int d) { for (iter i = g[u].begin(); i != g[u].end(); i++) {
for (int j = 0; j < d; j++)
cout << " ";
cout << i->first << endl;
put(i->second, d + 1);
}
}

版权声明:本文博客原创文章。博客,未经同意,不得转载。

最新文章

  1. Sandcastle----强大的C#文档生成工具
  2. 【BZOJ】2795: [Poi2012]A Horrible Poem
  3. 地理围栏算法解析(Geo-fencing)
  4. 一键清理Windows垃圾的BAT文件代码
  5. linux命令集——&lt;一&gt;目录处理命令
  6. YTU 2621: B 继承 圆到圆柱体
  7. C# WinForm实现控件拖动实例介绍
  8. iOS 图片按比例压缩,指定大小压缩
  9. python之requests-multipart/from-data
  10. MySQL 批量Dll操作(转)
  11. OpenCV入门教程
  12. think in uml 2.1
  13. s5pv210 的启动
  14. shell脚本-工作练习篇
  15. Python random模块方法
  16. proc/net/dev实时网速统计实例【转】
  17. spring-boot 集成 log4j 记录日志
  18. java学习笔记(一):开始第一个java项目
  19. 从mysql读取数据写入mongo
  20. 尚硅谷springboot学习22-Thymeleaf入门

热门文章

  1. Eclipse with C++: &quot;Launch failed. Binary not found.&quot;
  2. 关于扩展IP地址空间的几个方案的探讨
  3. Jenkins(两)
  4. 【剑指offer】q50:树节点最近的祖先
  5. 怎么样cocos2d-x正在使用ECS(实体-包裹-制)建筑方法来开发一款游戏?
  6. 再谈Hibernate级联删除——JPA下的Hibernate实现一对多级联删除CascadeType.DELETE_ORPHAN
  7. NYOJ 118 路方案(第二小的跨越)
  8. 在Sql中使用Try Catch
  9. 玩转Web之JavaScript(三)-----javaScript语法总结(三) 窗口/滚动条/文本的相关语法
  10. JAVA学习课第五 — IO流程(九)文件分割器合成器