MLE
用两个 vector 保存每个学生所对应的栈和队列是不是内存炸了,这该怎么优化内存占用呢?
#include<bits/stdc++.h>
using namespace std;
typedef stack <int> Rstu;
typedef queue <int> Lstu;
vector <Lstu> lstu;
vector <Rstu> rstu;
Rstu st;
Lstu stll;
int ans[100005],mp[100005],cnt;
void dfs(int x)
{
while(!lstu[x].empty())
{
dfs(lstu[x].front());
lstu[x].pop();
}
ans[cnt++] = x;
while(!rstu[x].empty())
{
dfs(rstu[x].top());
rstu[x].pop();
}
return;
}
int main()
{
int n,m;
for(int i = 0;i <= 50005;i++)
{
rstu.push_back(st);
lstu.push_back(stll);
}
ios::sync_with_stdio(false);
cin >> n;
for(int i = 2;i <= n;i++)
{
int x,met;
cin >> x >> met;
if(met == 0) lstu[x].push(i);
else rstu[x].push(i);
}
dfs(1);
cin >> m;
for(int i = 0;i < m;i++)
{
int step;
cin >> step;
mp[step] = -1;
}
for(int i = 0;i < cnt;i++)
if(mp[ans[i]] != -1) cout << ans[i] << " ";
return 0;
}