bard.cpp
Bài toán
Độ phức tạp
Code này của Nguyễn Tiến Trung Kiên
#include <stdio.h>
#define long long long
int n, T, m;
int b[12309];
long a[12309];
main(){
int i, cnt=0;
scanf("%d%d", &n, &T);
while (T--){
scanf("%d", &m);
bool bard=false;
for (i=1; i<=m; i++) scanf("%d", &b[i]);
for (i=1; i<=m; i++) if (b[i]==1) bard=true;
if (bard) {
cnt++;
for (i=1; i<=m; i++) a[b[i]] |= (1<<cnt);
}
else {
long sum=0;
for (i=1; i<=m; i++) sum |= a[b[i]];
for (i=1; i<=m; i++) a[b[i]]=sum;
}
}
for (i=1; i<=n; i++)
if (a[i]==a[1]) printf("%d\n", i);
}
Nhận xét