在今天早上的模拟赛中,我定义了如下函数:
int relabel(int u, vector<set<int> > &v1, vector<set<int> > &v2)
在该函数中有如下语句:
v2[u_].insert(relabel(i, v1, v2));
然后我 WA 0 了。赛后,我仅将该语句改为:
int x = relabel(i, v1, v2); v2[u_].insert(x);
然后就变成了 WA 50……
经测试,在本地无论使用何种语言标准、开 O2 与否,答案均与改后一致。
请问为什么会出现这种情况?是 UB、平台差异还是其他原因?