題目連結:http://acm.hdu.edu.cn/showproblem.php?pid=4022
STL應用,一開始用multimap寫的,然後實作不了,于是就看了别人用map自定義了一個一對多。。。orz。。。

1 #include<iostream>
2 #include<map>
3 #include<set>
4 const int N=100010;
5 using namespace std;
6 int n,m;
7 typedef map<int,multiset<int> >mp;
8 multiset<int>::iterator iter;
9
10 int main(){
11 while(~scanf("%d%d",&n,&m)){
12 if(n==0&&m==0)break;
13 mp mp1,mp2;
14 int x,y,c,d,_count;
15 for(int i=0;i<n;i++){
16 scanf("%d%d",&x,&y);
17 mp1[x].insert(y);
18 mp2[y].insert(x);
19 }
20 for(int i=0;i<m;i++){
21 scanf("%d%d",&c,&d);
22 _count=0;
23 if(c==0){
24 _count=mp1[d].size();
25 for(iter=mp1[d].begin();iter!=mp1[d].end();iter++){
26 mp2[*iter].erase(d);
27 }
28 mp1[d].clear();
29 }else if(c==1){
30 _count=mp2[d].size();
31 for(iter=mp2[d].begin();iter!=mp2[d].end();iter++){
32 mp1[*iter].erase(d);
33 }
34 mp2[d].clear();
35 }
36 printf("%d\n",_count);
37 }
38 printf("\n");
39 }
40 return 0;
41 }