#include #include #include <unordered_set>

using namespace std;

int main() { int N, G; cin >> N >> G;

vector<unordered_set<int>> friendCircles(G);

for (int i = 0; i < G; i++) {
    int k;
    cin >> k;
    for (int j = 0; j < k; j++) {
        int friendId;
        cin >> friendId;
        friendCircles[i].insert(friendId);
    }
}

unordered_set<int> invitedFriends;
invitedFriends.insert(1);
int count = 1;

for (int i = 0; i < G; i++) {
    bool invite = true;
    for (int friendId : friendCircles[i]) {
        if (invitedFriends.find(friendId) == invitedFriends.end()) {
            invite = false;
            break;
        }
    }
    if (invite) {
        count += friendCircles[i].size() - 1;
        for (int friendId : friendCircles[i]) {
            invitedFriends.insert(friendId);
        }
    }
}

cout << count << endl;

return 0;
Description约翰要举办一个Party他要邀请一些朋友来参加。在约翰的朋友圈中有一些朋友是好基友这些好基友有构成了他们自己的朋友圈。已知对于每一个朋友圈没有一个完全与之相同的。在约翰邀请朋友时:假设某个朋友圈有 k 个人如果约翰已经邀请了 其中的k-1个人那么剩下的那个人也得邀请。约翰想让你告诉他他最少需要邀请多少个朋友?我们假设 1 号朋友已经被邀请了。FormatInput第一行 N和

原文地址: https://www.cveoy.top/t/topic/hKBE 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录