思路: 如果一个串是另外一个串的字串,那么此串一定不会成功。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<set>
using namespace std;
const int N=110;
int h[N],g[N];
set<int>f[N];
set<int>::iterator m;
int main(){
int n,i,j,k;
while(scanf("%d",&n)!=EOF){
memset(h,0,sizeof(h));
memset(g,0,sizeof(g));
for(i=1;i<=n;i++){
scanf("%d",&h[i]);
f[i].clear();
for(j=0;j<h[i];j++) {
scanf("%d",&k);
f[i].insert(k);
}
}
for(i=1;i<=n;i++){
for(j=1;j<=n;j++){
if(i==j) continue;
for(m=f[i].begin();m!=f[i].end();m++){
if(f[j].find(*m)==f[j].end()) break;
}
if(m==f[i].end()) g[j]=1;
}
}//由于数据量比较小,暴力进行判断
for(i=1;i<=n;i++){
if(g[i]) printf("NO\n");
else printf("YES\n");
}
}
}