题目地址:点击打开链接
#include<stdio.h>
struct{
int x,y;
int flag;
}node[5005];
main(){
int a,b,n,i,j,count,k,t,d,e;
scanf("%d",&t);
while(t--){
count=0;
for(i=0;i<5005;i++)
node[i].flag=0;
scanf("%d",&n);
for(i=0;i<n;i++){
scanf("%d %d",&d,&e);
node[i].x=d<e?d:e;
node[i].y=d>e?d:e;
}
for(i=0;i<n;i++)
for(j=i+1;j<n;j++){
if(node[i].y<node[j].y){
a=node[i].x;b=node[i].y;
node[i].x=node[j].x;node[i].y=node[j].y;
node[j].x=a;node[j].y=b;
}
else if(node[i].y==node[j].y){
if(node[i].x<node[j].x){
a=node[i].x;b=node[i].y;
node[i].x=node[j].x;node[i].y=node[j].y;
node[j].x=a;node[j].y=b;
}
}
}
// for(i=0;i<n;i++)
// printf("(%d %d)\n",node[i].x,node[i].y);
for(i=0;i<n;i++){
if(node[i].flag==1)
continue;
count++;k=i;
for(j=i+1;j<n;j++){
if((node[k].x-node[j].y)>1&&node[j].flag==0){
node[j].flag=1;
k=j;
}
else if(node[k].x%2==1&&(node[k].x-node[j].y)==1&&node[j].flag==0){//这里又忘了判断flag呀!
node[j].flag=1;
k=j;
}
}
}
printf("%d\n",count*10);
}
}