天梯赛真题L2-005集合相似度
#include<bits/stdc++.h>
using namespace std;
int main()
{
set<int> s[55];
int n;
scanf("%d",&n);
for(int i = 1; i <= n; i++)
{
int k;
scanf("%d",&k);
for(int j = 0; j < k; j++)
{
int a;
scanf("%d",&a);
s[i].insert(a);
}
}
int m;
scanf("%d",&m);
while(m--)
{
int a,b;
scanf("%d%d",&a,&b);
set<int> w;
int l1 = s[a].size();
int l2 = s[b].size();
int l3 = 0;
set<int>::iterator it;
for(it = s[a].begin(); it != s[a].end(); it ++)
{
if(s[b].find(*it)!=s[b].end())
l3++;
}
printf("%.2lf%%\n",l3*1.0/(l1+l2-l3)*100);
}
return 0;
}