2 条题解
-
3
#include<bits/stdc++.h> using namespace std; struct st{ int l,r; }; int n; char a[1000]; vector<int>v[1000]; st new_tree[1000]; void dfs1(int now){ cout<<a[now]; if(new_tree[now].l)dfs1(new_tree[now].l); if(new_tree[now].r)dfs1(new_tree[now].r); } void dfs2(int now){ if(new_tree[now].l)dfs2(new_tree[now].l); if(new_tree[now].r)dfs2(new_tree[now].r); cout<<a[now]; } int main(){ ios::sync_with_stdio(0); cin.tie(0);cout.tie(0); cin>>n; for(int i=1;i<=n;i++){ cin>>a[i]; int x; while(cin>>x){ if(x==0)break; v[i].push_back(x); } } for(int i=1;i<=n;i++) if(v[i].size()){ new_tree[i].l=v[i][0]; for(int j=0;j<v[i].size()-1;j++) new_tree[v[i][j]].r=v[i][j+1]; } dfs1(1); cout<<endl; dfs2(1); return 0; }
-
0
#include <iostream> #include <cstring> #include <algorithm> #include <vector> using namespace std; #define int long long #define fre freopen(".in","r",stdin),freopen(".out","w",stdout) #define fcl fclose(stdin),fclose(stdout) inline int read() { int x=0,m=1; char ch=getchar(); while(!isdigit(ch)) { if(ch=='-') m=-1; ch=getchar(); } while(isdigit(ch)) { x=(x<<1)+(x<<3)+(ch^48); ch=getchar(); } return x*m; } inline void write(int x) { if(x<0) putchar('-'),write(-x); else { if(x>=10) write(x/10); putchar(x%10+'0'); } } #define read(n) n=read() const int N=205; struct Node { int l,r; }tr[N]; vector<int> g[N]; char a[N]; int n,x; inline void dfs1(int x) { cout<<a[x]; if(tr[x].l) dfs1(tr[x].l); if(tr[x].r) dfs1(tr[x].r); } inline void dfs2(int x) { if(tr[x].l) dfs2(tr[x].l); if(tr[x].r) dfs2(tr[x].r); cout<<a[x]; } signed main() { // fre; read(n); for(register int i=1;i<=n;++i) { cin>>a[i]; while(cin>>x) { if(x==0) break; g[i].push_back(x); } } for(register int i=1;i<=n;++i) if(g[i].size()) { tr[i].l=g[i][0]; for(register int j=0;j<g[i].size()-1;++j) tr[g[i][j]].r=g[i][j+1]; } dfs1(1); putchar('\n'); dfs2(1); // fcl; return 0; }
- 1
信息
- ID
- 196
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 7
- 标签
- (无)
- 递交数
- 132
- 已通过
- 35
- 上传者