笔试题:360找镇长的题。

这里写图片描写叙述
题目描写叙述:
多个镇里面有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;
}
原文地址:https://www.cnblogs.com/lxjshuju/p/7238112.html