深入探究

P1196 [NOI2002] 银河英雄传说

@[Onlooker_Turing_o_o](/user/339568) 搞不懂,为啥要爆栈
by 听取MLE声一片 @ 2021-12-04 09:40:36


改编译选项
by henryhu2006 @ 2021-12-04 09:42:21


@[听取MLE声一片](/user/253738) 递归形式下windows运行这题的数据会爆炸
by TonviaSzt @ 2021-12-04 09:42:28


`-Wl,--stack=536870912`
by henryhu2006 @ 2021-12-04 09:43:04


@[henryhu2006](/user/133060) 可以,但如果用非递归形式做呢?
by TonviaSzt @ 2021-12-04 09:43:36


@[Onlooker_Turing_o_o](/user/339568) 您代码怎么写的
by 听取MLE声一片 @ 2021-12-04 09:43:36


被嘲讽((( ```cpp #include <cstdio> #include <iostream> using namespace std; const int N = 5e5+5; int T,ltot[N],fa[N],ad[N]; int getfa(int x){ if(fa[x] == x) return x; int rt = getfa(fa[x]); ad[x] += ad[fa[x]]; return fa[x] = rt; } int main() { scanf("%d", &T); for(int i = 1; i < N; i++) fa[i] = i, ltot[i] = 1; for (int i = 1; i <= T; i++){ char o; int u, v; cin >> o >> u >> v; if(o == 'M'){ int fu = getfa(u), fv = getfa(v); if(fu ^ fv){ fa[fu] = fv; ad[fu] += ltot[fv]; ltot[fv] += ltot[fu]; ltot[fu] = 0; } } else{ if(getfa(u) != getfa(v)) printf("-1\n"); else printf("%d\n", (ad[u] - ad[v] > 0 ? ad[u] - ad[v] : ad[v] - ad[u]) - 1); } } return 0; } ``` 您交吧,Linux没问题(((
by TonviaSzt @ 2021-12-04 09:45:05


本地$Lemon$ 81pts TLE三个点
by TonviaSzt @ 2021-12-04 09:46:14


@[Onlooker_Turing_o_o](/user/339568) 请自己内存开大编译选项空间
by 听取MLE声一片 @ 2021-12-04 09:47:50


那不改编译选项有办法吗?
by TonviaSzt @ 2021-12-04 09:50:38


| 下一页