【链接】 我是链接,点我呀:)

【题意】

在这里输入题意

【题解】

可以先确定当前这棵子树的dfs序的范围。
然后第一个元素肯定是这棵子树的根节点。
那么只要在这棵子树的范围里面枚举节点。
看看有没有下一个bfs序的节点即可。
如果有的话,那么就说明这个根节点有多个子树。
则加入到它的儿子里面去。
然后确定他的每一个儿子的子树的dfs序的范围。
一直往下递归就好。
用bfs模拟,这样可以保证每次进入某个节点的时候,bfs序的下一个节点就是这个子树的第一个儿子节点。

【代码】

/*
1.Shoud it use long long ?
2.Have you ever test several sample(at least therr) yourself?
3.Can you promise that the solution is right? At least,the main ideal
4.use the puts("") or putchar() or printf and such things?
5.init the used array or any value?
6.use error MAX_VALUE?
7.use scanf instead of cin/cout?
8.whatch out the detail input require
*/
#include <bits/stdc++.h>
using namespace std; const int N = 1e3; int n, B[N + 5], D[N + 5];
queue < pair<int, int> > dl;
vector <int> G[N + 10]; int main() {
#ifdef LOCAL_DEFINE
freopen("F:\\c++source\\rush_in.txt", "r", stdin);
#endif
ios::sync_with_stdio(0), cin.tie(0);
while (cin >> n) {
for (int i = 1; i <= n; i++) cin >> B[i];
for (int i = 1; i <= n; i++) cin >> D[i];
for (int i = 1; i <= n; i++) G[i].clear();
dl.push(make_pair(1, n));
int now = 2;
while (!dl.empty()) {
int l = dl.front().first, r = dl.front().second;
dl.pop();
int root = D[l];
if (l >= r) continue; G[root].push_back(B[now]);
now++;
if (now > n) continue; int pre = l + 1; for (int i = l + 2; i <= r; i++) {
if (now <= n && D[i] == B[now]) {
dl.push(make_pair(pre, i-1));
pre = i;
G[root].push_back(D[i]);
now++;
}
}
dl.push({ pre, r });
}
for (int i = 1; i <= n; i++) {
cout << i << ":";
for (int x : G[i]) cout << ' ' << x;
cout << endl;
}
}
return 0;
}

最新文章

  1. 【代码笔记】iOS-点击加号增加书架,点击减号减少书架
  2. Bootstrap系列 -- 5. 文本对齐方式
  3. 如何在 kernel 和 hal 层读取同一个标志
  4. html-----007
  5. 如用使用高版本framework,比如支持iOS5及以上的工程中使用Social.framework
  6. android sdk api的层次结构
  7. Jasper_crosstab_columngroup header position config - (headerPosition=&quot;Stretch&quot;)
  8. libiconv_百度百科
  9. POJ 2823 Sliding Window 【单调队列】
  10. centos 6.4 FTP安装和配置
  11. 爬虫工具fiddle在firefox浏览器中的使用
  12. java http缓存
  13. 一个简单的go语言爬虫
  14. github pages + Hexo + node.js 搭建属于自己的个人博客网站
  15. c# 通过反射输出成员变量以及成员变量的值
  16. Java 3-Java 基本数据类型
  17. Linux 静态库与动态库
  18. DIV样式汇总
  19. serialport控件的详细用法
  20. python16_day39【算法】

热门文章

  1. CodeChef November Challenge 2013 部分题解
  2. 网络爬虫与web之间的访问授权协议——Robots
  3. iscsi共享存储的简单配置和应用
  4. 紫书 例题 9-9 UVa 10003 (区间dp+递推顺序)
  5. dlmalloc 2.8.6 源代码具体解释(5)
  6. 知名游戏开发者称 C++ 是一种非常糟糕、可怕的语言(C++不是一门可怕的语言,可怕的是一群没有耐心的程序员来使用C++这门语言)
  7. SQL Server performance for alter table alter column change data type
  8. 托管非托管Dll动态调用
  9. 【Henu ACM Round #12 B】 Alice, Bob, Two Teams
  10. C# XML类学习整理(待补)