1063 Set Similarity (25 分)
思路
set的各种用法,遍历需要使用迭代器
set::iterator iter
代码
#include<bits/stdc++.h>
using namespace std;
const int N = 51;
set<int> s[N];
int main(){
int n;
scanf("%d",&n);
for(int i =0;i<n;i++)
{
int num,in;
scanf("%d",&num);
for(int j =0;j<num;j++)
{
scanf("%d",&in);
s[i].insert(in);
}
}
int m,one,two;
scanf("%d",&m);
for(int i =0;i<m;i++)
{
scanf("%d%d",&one,&two);
set<int>::iterator iter;
int ans = 0;
int len = s[two-1].size();
for(iter = s[one-1].begin();iter!=s[one-1].end();iter++)
{
if(s[two-1].find(*iter)!=s[two-1].end())
ans++;
else len++;
}
double value = double(ans)/len*100;
printf("%.1lf",value);
cout<<"%"<<endl;
}
}