提交时间:2024-12-13 20:59:05

运行 ID: 35601

#include<bits/stdc++.h> using namespace std; const int inf=1e9+7; int g[1000005][3]; int data[1000005]; bool pd[1000005]; int f[1000005]; int bj[1000005]; int dg(int id) { if(id==0) { return inf; } if(data[id]!=-1) { return f[id]; } int ret1=dg(g[id][1]),ret2=dg(g[id][2]); if(ret1<ret2) { bj[id]=1; } else { bj[id]=2; } return min(ret1,ret2); } void cxdg(int id) { if(data[id]!=-1) { cout<<data[id]<<' '; return ; } cxdg(g[id][bj[id]]); cxdg(g[id][3-bj[id]]); return ; } int main() { int n,m; cin>>n>>m; for(int i=1;i<=n;i++) { cin>>data[i]; int x=data[i]; while(x>0) { f[i]=x%10; x/=10; } // cout<<f[i]<<' '; } for(int i=1;i<=n;i++) { int x; cin>>x; for(int j=1;j<=x;j++) { cin>>g[i][j]; pd[g[i][j]]=true; } } int root; for(int i=1;i<=n;i++) { if(pd[i]==false) { root=i; break; } } dg(root); cxdg(root); return 0; }