1166 Summit

题目链接https://pintia.cn/problem-sets/994805342720868352/exam/problems/1478635919459287040

题解代码

#include<iostream>
#include<vector>
using namespace std;
int mmap[205][205];
int main() {
    int n, m, k, l;
    cin >> n >> m;
    for (int i = 0; i < m; i++) {
        int a, b;
        cin >> a >> b;
        mmap[a][b] = mmap[b][a] = 1;
    }
    cin >> k;
    for (int i = 1; i <= k; i++) {
        cin >> l;
        vector<int> v(l);
        int vis[205] = {0};
        for (int j = 0; j < l; j++) {
            cin >> v[j];
            vis[v[j]] = 1;
        }
        int need_help = 0;
        for (int j = 0; j < l; j++) {
            for (int p = j + 1; p < l; p++) {
                if (!mmap[v[j]][v[p]]) need_help = 1;
            }
        }
        if (need_help) {
            printf("Area %d needs help.\n", i);
            continue;
        };
        int more_people = 0;
        for (int j = 1; j <= n; j++) {
            if (!vis[j]) {
                int p;
                for (p = 0; p < l; p++) {
                    if (!mmap[v[p]][j]) break;
                }
                if (p == l) {
                    more_people = j;
                    break;
                }
            }
        }
        if (more_people) {
            printf("Area %d may invite more people, such as %d.\n", i, more_people);
            continue;
        }
        printf("Area %d is OK.\n", i);
    } 
    return 0;
}
posted @ 2023-05-07 17:25  江韵阁  阅读(12)  评论(0)    收藏  举报