题8.天梯赛训练-集合相似度 (25 分)
一、题目
二、题解
#include <bits/stdc++.h>
using namespace std;
int main()
{
set<int> s[50];
int N,M,num;
cin>>N;
for(int i=0;i<N;i++)
{
cin>>M;
for(int j=0;j<M;j++)
{
cin>>num;
s[i].insert(num);
}
}
int K;
int key1,key2;
set<int>::iterator it;
cin>>K;
for(int i=0;i<K;i++)
{
cin>>key1>>key2;
float Nc=0,Nt;
for(it=s[key1-1].begin();it!=s[key1-1].end();it++)
{
if(s[key2-1].find(*it)!=s[key2-1].end())
{
Nc++;
}
}
Nt=s[key1-1].size()+s[key2-1].size()-Nc;
printf("%.2f%%\n",Nc/Nt*100);
}
}