能用STL解决的问题都不叫问题。
set是一个集合,S.size()表示的是不同标签的个数(即集合的大小)。
#include<iostream>
#include<set>
#include<algorithm>
using namespace std;
typedef struct node
{
string a;
int count;
int data;
}Node;
bool cmp(Node a,Node b)
{
if(a.data!=b.data)
return a.data>b.data;
else
return a.count<b.count;
}
int main()
{
int i,j,n,temp;
cin>>n;
Node que[n];
for (i=0;i<n;i++)
{
cin>>que[i].a;
set<int>S;
cin>>que[i].count;
for (j=0;j<que[i].count;j++)
{
cin>>temp;
S.insert(temp);
}
que[i].data=S.size();
}
sort(que,que+n,cmp);
if (n==0)
cout<<"- - -";
else if (n==1)
cout<<que[0].a<<" - -";
else if (n==2)
cout<<que[0].a<<" "<<que[1].a<<" -";
else
cout<<que[0].a<<" "<<que[1].a<<" "<<que[2].a;
}