注意:printf输出百分号:
printf("%%");
#include <iostream>
#include <unordered_set>
#include <vector>
using namespace std;
vector<unordered_set<int> > sets;
int main(){
int n;
scanf("%d",&n);
for(int i = 0;i < n;i++){
int k;
scanf("%d",&k);
unordered_set<int> temp;
for(int j = 0;j < k;j++){
int t;
scanf("%d",&t);
temp.insert(t);
}
sets.push_back(temp);
}
int q;
scanf("%d",&q);
for(int i = 0;i < q;i++){
int u,v;
scanf("%d %d",&u,&v);
int countCommon = 0,countTotal;
unordered_set<int>::iterator it = sets[v - 1].begin();
while(it != sets[v - 1].end()){
if(sets[u - 1].find(*it) != sets[u - 1].end()){
countCommon++;
}
it++;
}
countTotal = sets[u - 1].size() + sets[v - 1].size() - countCommon;
printf("%.1f%%\n",(double)countCommon * 100 / countTotal);
}
system("pause");
return 0;
}