#include<iostream>
#define MAXSIZE 1000
using namespace std;
class node
{
public:
int degree;
int parent;
int numOfSon;
int son[1000];
node()
{
degree=0;
parent=0;
numOfSon=0;
}
};
class tree
{
public:
node point[MAXSIZE];
int nums;
};
int calc(int fa,int son,tree * mytree)
{
mytree->point[fa].degree++;
mytree->point[son].degree++;
mytree->point[son].parent=fa;
mytree->point[fa].son[mytree->point[fa].numOfSon++]=son;
}
int main()
{
int t=0,edge=0;
cin>>t;
while(t--)
{
tree* mytree=new tree;
cin>>edge;
edge--;
mytree->nums=edge+1;
int fa,son;
while(edge--)
{
cin>>fa>>son;
calc(fa,son,mytree);
}
int total=0,parent;
for(int i=0;i<mytree->nums;i++)
{
parent=mytree->point[i].parent;
// cout<<mytree->point[parent].degree<<"<---fa\n";
// cout<<mytree->point[i].degree<<"<-----me\n";
// int numOfSon=mytree->point[i].numOfSon;
// int sonpos=0;
// for(int i=0;i<numOfSon;i++)
// {
// sonpos=mytree->point[i].son[i];
// if(mytree->point[i].degree<mytree->point[sonpos].degree)
// {
// ok=false;
// break;
// }
// }
if(mytree->point[i].degree>=mytree->point[parent].degree)
{
int numOfSon=mytree->point[i].numOfSon;
bool ok=true;
int sonpos=0;
for(int j=0;j<numOfSon;j++)
{
sonpos=mytree->point[i].son[j];
if(mytree->point[i].degree<mytree->point[sonpos].degree)
{
ok=false;
break;
}
}
if(ok)total++;
}
}
delete mytree;
cout<<total<<endl;
}
}
代码冗余度太高,懒得改了。懂懂思想就好。为了简单就直接定义大数组了。。