Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Kiểm tra có thể bật tất cả đèn không bằng C++

Mô tả bài toán

Có m đèn, ban đầu tắt. n công tắc, công tắc i bật tập đèn A[i]. Kiểm tra có thể bật được tất cả m đèn không (bằng cách bật một số công tắc).

Ví dụ

A=[[1,4],[1,3,1],[2]], m=4 → Bật tất cả công tắc → đèn 1,2,3,4 đều bật → True.

Thuật toán

Gộp tất cả đèn có thể bật từ các công tắc vào một set. Nếu size(set) == m thì true.

Code C++

#include <bits/stdc++.h>
using namespace std;

bool solve(vector> A, int m) {
    set s;
    for (auto &row : A)
        for (int x : row)
            s.insert(x);
    return s.size() == m;
}

int main() {
    vector> A = {{1,4},{1,3,1},{2}};
    int m = 4;
    cout << solve(A, m) << endl;
    return 0;
}

Đầu vào / Đầu ra

Input: {{1,4},{1,3,1},{2}}, 4

Output: 1 (true)