题目描写叙述:
多个镇里面有n个人在选镇长,在每个村里面选择一个全部村名(1…n标记)都认识的人。(这个人能够不认识全部人)。假设有多个人则同一时候列出来。
输入描写叙述:
第一行输入的是镇子个数,第二行第一个数是第一个镇子中
的人数,第二个数是关系数。有多少关系数接下来连续输入的就是关系数。
输出描写叙述:
每个镇子按次序输出,先输出预选镇长人数。然后是镇长的罗列。
#include <iostream>
#include <string.h>
using namespace std;
struct Node
{
int index;
Node *next;
Node(int d = int()):index(d),next(NULL){}
};
struct My_Node
{
Node *adj;
int count;
My_Node():adj(NULL),count(0){}
};
int main()
{
int a,b;
int n;
int size;
My_Node node[1000];
int k = 0;
cin>>n;
while(n--)
{
cin>>a>>b;
int c,d;
int *PeoPle = new int[a];
memset(PeoPle,0,sizeof(PeoPle));
size = a;
while(b--)
{
cin>>c>>d;
if(c!=d)
{
PeoPle[d]++;
}
}
k++;
for(int i = 1;i<=size;i++)
{
if(PeoPle[i]==size-1)
{
node[k-1].count++;
Node *s = new Node(i);
Node *p = node[k-1].adj;
if(p==NULL)
{
node[k-1].adj = s;
}
else
{
while(p->next!=NULL)
{
p=p->next;
}
p->next = s;
}
}
}
}
for(int i = 0;i<k;i++)
{
Node *p = node[i].adj;
cout<<node[i].count<<endl;
if(node[i].count==0)cout<<endl;
while(p!=NULL)
{
cout<<p->index<<endl;
p=p->next;
}
}
return 0;
}