Skip to main content
  1. Posts/
  2. Algorithm/

BOJ 1043 거짓말

·161 words·1 min
Jiho Kim
Author
Jiho Kim
달려 또 달려

📝 문제 정보
#

🧐 관찰 및 접근
#

  • 지민이는 모든 파티에 참여해야하므로, 진실을 아는 사람이 있는 파티의 모든 사람은 진실을 알게 된다.
    • 모든 파티에 대해 진실을 알게 된 사람을 확인한 후, 진실을 아는사람이 없는 파티들의 수를 세면 된다.
    • 유니온 파인드, 분리 집합으로 해결하자.

💻 풀이
#

  • 코드 (C++):
void solve(){
    int N, M; cin >> N >> M;
    vector<vector<int>> parties;
    UnionFind UF(N+1); // 0은 진실을 아는 사람
    
    int cnt; cin >> cnt;
    rep(i, 0, cnt){
        int a; cin >> a;
        UF.merge(0, a);
    }

    rep(i, 0, M){
        cin >> cnt;
        vector<int> party(cnt);
        rep(j, 0, cnt) cin >> party[j];
        parties.push_back(party);
        rep(j, 0, cnt-1) UF.merge(party[j], party[j+1]);
    }
    
    int ans = 0;
    for(auto party: parties){
        bool flag = true;
        for(auto p: party) if(UF.find(p) == 0) flag = false;
        if(flag) ans++;
    }
    cout << ans;
}
🔒

구현 코드 잠금

아래 쿠팡 링크를 방문하시면 코드가 공개됩니다.
광고 수익이 블로그 운영에 도움이 됩니다 🙏

🛒 쿠팡 방문하고 코드 보기

방문 후 잠금이 자동으로 해제됩니다