1063 Set Similarity (25分) PAT


#include<cstdio>
#include<algorithm>
#include<string>
#include<set>

using namespace std;


int main() {
    set<int> s[51];
    int N, M, K,temp;
    scanf("%d", &N);
    for (int i = 0; i < N; i++) {
        scanf("%d", &M);
        while (M--) {
            scanf("%d", &temp);
            s[i].insert(temp);
        }
    }
    scanf("%d", &K);
    int set1, set2;
    while (K--) {
        int c = 0;
        scanf("%d %d", &set1, &set2);
        set1--;
        set2--;
        if (s[set1].size() > s[set2].size()) {
            swap(set1, set2);
        }
        set<int>::iterator temp;
        for (set<int>::iterator it = s[set1].begin(); it != s[set1].end(); it++) {
            if (s[set2].find(*it) != s[set2].end()) c++;
        }
        double totall = s[set1].size() + s[set2].size();
        // printf("c: %d  total: %f", c, totall);
        printf("%.1f%%\n", c / (totall - c) * 100);
    }


    return 0;
}
发布了17 篇原创文章 · 获赞 0 · 访问量 2447

猜你喜欢

转载自blog.csdn.net/Ike_Lin/article/details/104329899