MLE求助
查看原帖
MLE求助
351239
zunfxsinw楼主2021/2/19 22:19

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;
}
2021/2/19 22:19
加载中...