提交时间:2025-11-26 20:31:05
运行 ID: 38985
#include<bits/stdc++.h> using namespace std; #define N 1145 int n,m,p[N]; bitset<N>a[N]; bool vis[N]; bool check(int u,int v){ for(int i=1;i<=m;i++){ if(p[i]<=1) continue; if(a[i][v]>a[i][u]) return 0; } return 1; } void del(int u){ for(int i=1;i<=m;i++){ if(p[i]<=1) continue; if(a[i][u]){ a[i][u]=0; p[i]--; } } } void solve(){ cin>>n>>m; memset(vis,0,sizeof(vis)); for(int i=1,j;i<=m;i++){ a[i].reset(); cin>>p[i]; for(int k=1;k<=p[i];k++){ cin>>j; a[i][j]=1; } } for(int stp=1;stp<n;stp++){ bool flag=0; for(int u=1;u<=n;u++){ for(int v=1;v<=n;v++){ if(u==v) continue; if(vis[u]||vis[v]) continue; if(!check(u,v)) continue; del(v); vis[v]=1; flag=1; break; } if(flag) break; } if(!flag){ cout<<"NO"<<endl; return; } } cout<<"YES"<<endl; } int main(){ ios::sync_with_stdio(0); int t; cin>>t; while(t--) solve(); return 0; }