通过这个题学习了stl中的set的用法,并第一次了解了迭代器。
通过set容器将数据去重,并快速查找。
#include <iostream> #include <stdio.h> #include <set> #include <algorithm> using namespace std; int n,k; set<int> s[55]; int main() { cin>>n; for(int i=1;i<=n;i++) { int num; cin>>num; for(int j=1;j<=num;j++) { int elem; cin>>elem; s[i].insert(elem); } } cin>>k; for(int i=1;i<=k;i++) { int equal=0,g1,g2; cin>>g1>>g2; set<int>::iterator s_it; for(s_it=s[g1].begin();s_it!=s[g1].end();s_it++) { if(s[g2].find(*s_it)!=s[g2].end()) equal++; } int inequal=s[g1].size()+s[g2].size()-equal; printf("%.2f%% ",100.0*equal/inequal); } return 0; }