存个链式hash表的板子 比较好清空
const int MAXM=1e7+7; struct{ int next[MAXM],head[MAXM],ans[MAXM],size; ll state[MAXM]; void init(){ size=0; memset(head,0,sizeof(head)); } ll check(ll val){ int h=(val%MAXM+MAXM)%MAXM; for(int i=head[h];i;i=next[i]){ if(state[i]==val)return ans[i]; } return 0; } ll insert(ll val,ll ans2){ int h=(val%MAXM+MAXM)%MAXM; for(int i=head[h];i;i=next[i]){ if(state[i]==val)return 1; } state[size]=val; next[size]=head[h]; ans[size]=ans2; head[h]=size++; return 0; } void del(ll val) { int h=(val%MAXM+MAXM)%MAXM; head[h]=0; } }H;
另外查询边集中有无一条边时
直接用vector binary_search会远快于其他所有方法