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++;
}