2 条题解

  • 3
    @ 2022-11-19 10:19:19
    #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
      @ 2022-11-19 10:13:30
      #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
      上传者