ACM UVA-10227

題目

int main(int argc, char const* argv[])
{
    int ap;

    while (scanf("%d",&ap)!= EOF) {
        for(int kk = 0;kk<ap;kk++){
            int t,p;
            scanf("%d %d",&p,&t);
            vector< vector<int> > pt(p,vector<int>(t));
            vector< vector<int> > pp(p);
            string line;
            getline(cin,line);
            while(getline(cin,line)){
                if(line == ""){
                    break;
                }
                istringstream stream(line);
                int ip,it;
                stream>>ip>>it;
                pt[ip-1][it-1] = 1;
                pp[ip-1].push_back(it-1);

            }
            vector<int> u(p);
            int count = 0;
            for(int i = 0;i<p;i++){
                if(u[i]){
                    continue;
                }
                u[i] = 1;
                bool yy;
                for(int j = i+1;j<p;j++){
                if(u[j]){
                    continue;
                }
                    for(vector<int>::iterator it = pp[i].begin();it != pp[i].end();it++){
                        yy = pt[i][*it] & pt[j][*it];
                        if(!yy){
                            //printf("%d %d not hit \n",i+1,j+1);
                            break;
                        }
                    }
                    if(yy){
                        //printf("%d %d  hit \n",i+1,j+1);
                        u[j] = 1;

                    }

                }
                count++;
            }

            printf("%d\n",count);
            if(kk != ap-1){
                printf("\n");
            }
        }
    }
    return 0;
}