문제 : https://www.acmicpc.net/problem/1043
아이디어 : 각 파티를 이진수로 바꿔 비트연산자로 비교, 진실을 알 수 있는 자가 생기면 T[0]을 리셋하고 다시 진행
코드 :
#include <bits/stdc++.h>
using namespace std;;
vector<long long> T;
int main(){
ios_base::sync_with_stdio(0);
cin.tie(0);
int N,M,t,k,c=0;
cin>>N>>M;
for(int i=0;i<=M;i++){
cin>>t;
long long l=0;
for(int j=0;j<t;j++){
cin>>k;
l+=(1<<k);
}
T.push_back(l);
}
for(int i=1;i<=M;i++){
if(T[i]&T[0]){
if((T[i]|T[0])!=T[0]){
T[0]|=T[i];
i=0;c=0;
continue;
}
}
else c++;
}
cout<<c;
}
결과 : 틀렸습니다
예제는 다 작동합니다
불러오는 중...