⬆︎
×

[PAT-A] 1149 Dangerous Goods Packaging

Hyplus目录

Java

import java.io.*;
import java.util.*;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine());
        int n = Integer.parseInt(st.nextToken());
        int m = Integer.parseInt(st.nextToken());

        int[] incompatible1 = new int[n];
        int[] incompatible2 = new int[n];

        for (int i = 0; i < n; i++) {
            st = new StringTokenizer(br.readLine());
            incompatible1[i] = Integer.parseInt(st.nextToken());
            incompatible2[i] = Integer.parseInt(st.nextToken());
        }

        Set<Integer> goods = new HashSet<>();
        for (int i = 0; i < m; i++) {
            goods.clear();

            st = new StringTokenizer(br.readLine());
            int K = Integer.parseInt(st.nextToken());

            for (int j = 0; j < K; j++) {
                goods.add(Integer.parseInt(st.nextToken()));
            }

            boolean isCompatible = true;
            for (int j = 0; j < n; j++) {
                if (goods.contains(incompatible1[j]) && goods.contains(incompatible2[j])) {
                    isCompatible = false;
                    break;
                }
            }

            System.out.println(isCompatible ? "Yes" : "No");
        }
    }
}

C++

#include <iostream>
#include <cstring>
#include <algorithm>
#include <unordered_set>

using namespace std;

const int N = 100010;

int n, m;
int danger1[N], danger2[N];
unordered_set<int> st;

int main() {
    scanf("%d%d", &n, &m);

    for (int i = 0; i < n; ++i)
        scanf("%d%d", &danger1[i], &danger2[i]);

    while (m--) {
        int k;
        scanf("%d", &k);

        st.clear();
        while (k--) {
            int x;
            scanf("%d", &x);
            st.insert(x);
        }

        bool flag = true;
        for (int i = 0; i < n; ++i)
            if (st.count(danger1[i]) && st.count(danger2[i])) {
                flag = false;
                break;
            }

        if (flag) printf("Yes\n");
        else printf("No\n");
    }

    return 0;
}

发表评论