IP聚合
Accepts: 2354
Submissions: 6308
Time Limit: 2000/1000 MS (Java/Others)
Memory Limit: 65536/65536 K (Java/Others)
- #include<stdio.h>
- #include<string.h>
- #include<queue>
- #include<algorithm>
- #include<stack>
- using namespace std;
- int a[1010],b[1010],c[1010],d[1010];
- int p1[1010],p2[1010],p3[1010],p4[1010];
- int main()
- {
- int t;
- int res[1100];
- scanf("%d",&t);
- int num=1;
- while(t--){
- memset(res,sizeof(res));
- int n,m;
- scanf("%d%d",&n,&m);
- for(int i=0;i<n;i++)
- scanf("%d.%d.%d.%d",&a[i],&b[i],&c[i],&d[i]);
- int A,B,C,D;
- for(int i=0;i<m;i++){
- scanf("%d.%d.%d.%d",&A,&B,&C,&D);
- int t1,t2,t3,t4;
- int tot=1;
- for(int j=0;j<n;j++){
- int x=0;
- t1=A&a[j],t2=B&b[j],t3=C&c[j],t4=D&d[j];
- if(j==0){
- p1[1]=t1,p2[1]=t2,p3[1]=t3,p4[1]=t4;
- continue;
- }
- for(int k=1;k<=tot;k++){
- if(t1==p1[k]&&t2==p2[k]&&t3==p3[k]&&t4==p4[k])
- x=1;
- }
- if(!x){
- tot++;
- p1[tot]=t1,p2[tot]=t2,p3[tot]=t3,p4[tot]=t4;
- }
- }
- res[i]=tot;
- }
- printf("Case #%d:\n",num++);
- for(int i=0;i<m;i++)
- printf("%d\n",res[i]);
- }
- return 0;
- }