1. 程式人生 > 其它 >L1-020 帥到沒朋友

L1-020 帥到沒朋友

當芸芸眾生忙著在朋友圈中發照片的時候,總有一些人因為太帥而沒有朋友。本題就要求你找出那些帥到沒有朋友的人。
輸入格式:

輸入第一行給出一個正整數N(≤100),是已知朋友圈的個數;隨後N行,每行首先給出一個正整數K(≤1000),為朋友圈中的人數,然後列出一個朋友圈內的所有人——為方便起見,每人對應一個ID號,為5位數字(從00000到99999),ID間以空格分隔;之後給出一個正整數M(≤10000),為待查詢的人數;隨後一行中列出M個待查詢的ID,以空格分隔。

注意:沒有朋友的人可以是根本沒安裝“朋友圈”,也可以是隻有自己一個人在朋友圈的人。雖然有個別自戀狂會自己把自己反覆加進朋友圈,但題目保證所有K超過1的朋友圈裡都至少有2個不同的人。
輸出格式:

按輸入的順序輸出那些帥到沒朋友的人。ID間用1個空格分隔,行的首尾不得有多餘空格。如果沒有人太帥,則輸出No one is handsome。

注意:同一個人可以被查詢多次,但只輸出一次。
輸入樣例1:

3
3 11111 22222 55555
2 33333 44444
4 55555 66666 99999 77777
8
55555 44444 10000 88888 22222 11111 23333 88888
結尾無空行

輸出樣例1:

10000 88888 23333
結尾無空行

輸入樣例2:

3
3 11111 22222 55555
2 33333 44444
4 55555 66666 99999 77777
4
55555 44444 22222 11111

輸出樣例2:

No one is handsome

 使用C++資料結構set即可方便地解決問題,當set不為空時,將set內結果輸出,當set為空,立即輸出No one is handsome;

程式碼:

#include <iostream>
#include <set>
using namespace std;
int main() {
    int a, b, c;
    cin >> a;
    set<string> s, ans;
    string str;
    for(int i = 0; i < a; i++) {
        cin >> b;
        if(b >= 2) {
            for(int j = 0; j < b; j++) {
                cin >> str;
                s.insert(str);
            }
        } else {
            cin >> str;
        }
    }
    cin >> c;
    int flag = 0;
    for(int i = 0; i < c; i++) {
        cin >> str;
        if(s.find(str) == s.end() && ans.find(str) == ans.end()) {
            ans.insert(str);
            if(flag == 1)
                cout << " ";
            cout << str;
            flag = 1;
        }
    }
    if(flag == 0)
        cout << "No one is handsome";
    return 0;
}