1 关于set删除的一些坑点
multiset 删除如果删除具体值的话。会把所有这个值都删除,所以如果你只想删除一个的话你需要写 tree.erase(tree.find(x)) 然后就是那个神奇的迭代器失效
for(set<int>::iterator i=G[x].begin();i!=G[x].end();)//遍历连出去的每个点
{ int u=*i;
if(!flag[u])
{G[x].erase(i++);ru[u]--;
if(ru[u]==0)
{ flag[u]=1; ans++; solve(u); }
}
else
i++;
}