洛谷题 求助

题目

#include<bits/stdc++.h>
using namespace std;
int t,n,m;
int main()
{
	scanf("%d",&t);
	while(t--)
	{
		vector<int>v[500005];
		scanf("%d%d",&n,&m);
		for(int i=1;i<=m;++i)
		{
			int x,y;
			scanf("%d%d",&x,&y);
			v[x].push_back(y);
		}
		for(int i=1;i<=n;++i)
		{
			sort(v[i].begin(),v[i].end());
			for(int j=0;j<v[i].size();++j) printf("%d ",v[i][j]);
			printf("\n");
		}
	}
	return 0;
}

我还没输入它就结束了

提交上去第二个点TLE

是我编译器出问题了吗


洛谷IDE可以
但是我还是超时哎

@金杭东

这是因为你在 main 函数里面开了一个巨大的 vector,而且你用的是 Windows,Win 默认栈空间是 1 MB 的,所以炸掉了。

可以编译时加入 -Wl,--stack=512000000 改变栈空间大小,这里改成 512 MB。

怎么加

@苍穹一粟 在吗

谢谢
我把vector开在外面就好了
但是为什么我之前那个代码会超时呀

@金杭东

现在还超时吗?

我觉得可能是对于每组测试数据都开一个 vector,申请需要时间吧(?

不超时了

vector 和数组一样的

谁和你说的

1 个赞

我的意思在定义大小这方面,单纯他们说的这个

他这个问题很显然就是不能再主函数里开这么大的。