分值 : 25 难度 : 中等题 思路 : 巧用set 自动去重 坑点 : 用set 可以用 set.count()
123456789101112131415161718192021222324252627282930313233
#include <iostream>#include <set>using namespace std ;set <int> data[51];set <int> list ;set <int >::iterator iter ;int main() { int N ,K; cin >> N ; for(int i = 1 ; i < N+1; i++) { int temp,value ; cin >> temp ; for(int j = 0 ; j < temp; j++) { cin >> value ; data[i].insert(value) ; } } cin >> K ; for(int i = 0 ; i< K ; i++) { int v1 ,v2 ; cin >> v1 >> v2 ; int c1 = data[v1].size() ; int c2 = data[v2].size() ; int count =0; for(iter = data[v1].begin() ;iter!= data[v1].end() ; iter++) if(data[v2].count(*iter) ==1) count ++ ; printf("%2.1lf%%\n" , 100.0*count/(c1+c2-count)) ; }}