#include<iostream> using namespace std; typedef struct Relation_ { int first; int end; }Re; typedef struct Leader_ { int mun; int*pResult; }Le; Le GetLeader(int Sum,int M,Re*pRelation) { int i=0; int*p1=new int [Sum];//biao shi zong ren ren shi de ren int*p2=new int [Sum];//zi ji ren shi bie ren Le mLe; mLe.mun=0; int*pResult=new int[Sum]; for(i=0;i<Sum;i++) { p1[i]=p2[i]=0; } for(i=0;i<M;i++) { if(pRelation[i].first!=pRelation[i].end) { p1[pRelation[i].end-1]++; p2[pRelation[i].first-1]=1; } } for(i=0;i<Sum;i++) { if(p2[i]!=1 && p1[i]==Sum-1) { pResult[mLe.mun]=i+1; mLe.mun++; } } mLe.pResult=pResult; if(p1!=NULL) delete []p1; if(p2!=NULL) delete []p2; return mLe; } void GetResult() { int T; cout<<"请输入将要測试几组数据:"<<endl; cin>>T; int i; int Sum; int M; int first,end; for(i=0;i<T;i++) { cout<<"第 "<<i+1<<" 组数据:"<<endl; cout<<"总人数:"; cin>>Sum; cout<<"关系对数:"; cin>>M; cout<<"例如以下:"<<endl; Re* pRelation=new Re[M]; int j; //for(j=0;j<Sum;j++)pRelation[j].first=pRelation[j].end=0; for(j=0;j<M;j++) { cin>>first>>end; pRelation[j].first=first; pRelation[j].end=end; } cout<<"镇长:"<<endl; Le mLe=GetLeader(Sum,M,pRelation); cout<<"候选人数:"<<mLe.mun<<endl; cout<<"镇长为:"; for(j=0;j<mLe.mun;j++)cout<<mLe.pResult[j]<<" "; //cout<<endl; if(mLe.pResult!=NULL)delete []mLe.pResult; if(pRelation!=NULL)delete []pRelation; cout<<endl; } } int main() { GetResult(); return 0; }