uva10410(dbl)
来源:互联网 发布:打开文件软件下载 编辑:程序博客网 时间:2024/06/08 06:27
给出BFS和DFS求树
#include<iostream>#include<cstdio>#include<cstring>#include<vector>using namespace std;const int maxn=1010;int n;vector<int> ans[maxn],sub[maxn],pos[maxn];int bfs[maxn],dfs[maxn];void init(){ for(int i=0;i<=n;i++) { sub[i].clear(); ans[i].clear(); pos[i].clear(); }}void process(int u,int s){ int rej=-1,j; bool f=true; for(int i=s;i<n;i++) { bool have=false; for(j=0;j<sub[u].size();j++) if(bfs[i]==sub[u][j]) { have=true; break; } if(have&&j>rej) { f=false; rej=j; ans[u].push_back(bfs[i]); pos[u].push_back(j); } else if(!f)break; } for(int i=0;i<pos[u].size();i++) { int tmp=(i==pos[u].size()-1)?sub[u].size():pos[u][i+1]; for(int j=pos[u][i]+1;j<tmp;j++) sub[ans[u][i]].push_back(sub[u][j]); process(ans[u][i],s+pos[u].size()); }}void solve(){ for(int i=1;i<n;i++) sub[bfs[0]].push_back(dfs[i]); process(bfs[0],1); for(int i=1;i<=n;i++) { printf("%d:",i); for(int j=0;j<ans[i].size();j++)printf(" %d",ans[i][j]); printf("\n"); }}int main(){ #ifndef ONLINE_JUDGE freopen("in.txt","r",stdin); #endif while(scanf("%d",&n)!=EOF) { init(); for(int i=0;i<n;i++)cin>>bfs[i]; for(int i=0;i<n;i++)cin>>dfs[i]; solve(); } return 0;}
0 0
- uva10410(dbl)
- uva10410 栈
- 数位统计+hdu3972(dbl)
- UVa10410 - Tree Reconstruction
- uva10410(树还原BFS)
- bfs+二分图(dbl)--poj3281
- sql中的dbl的含义
- UVA10410 - Tree Reconstruction(队列)
- 习题6-11 树重建 UVa10410
- [UVA10410]Tree Reconstruction[BFS、DFS序建树]
- win7 oracle32位客户端安装找不到orandce11.dll.dbl
- uva10410 - Tree Reconstruction BFS和DFS重建树
- 用bfs和dfs建树--uva10410 Tree reconstruction
- [刷题]算法竞赛入门经典(第2版) 6-11/UVa10410 6-13/UVa215
- spring jdbc mapper
- C语言涉及地址, 指针等符号的英语读法,有助于语法理解
- ZeroMQ(java)之Publish/Subscribe模式
- 跳槽风波的感悟
- 智能机的崛起与移动时代
- uva10410(dbl)
- ZeroMQ(java)之Push/Pull模式
- hibernate中自定义主键生成器
- 过滤Java中特殊字符
- 海量数据存储
- IOS ARC与非ARC之间的转换
- ZeroMQ(java)之Router/Dealer模式
- Xcode 如何向工程里添加 framework
- Android 和 C# WCF 的互交。