Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // uva 11825
- #include<algorithm>
- #include<bitset>
- #include<cctype>
- #include<cmath>
- #include<complex>
- #include<cstdio>
- #include<cstdlib>
- #include<cstring>
- #include<functional>
- #include<iostream>
- #include<istream>
- #include<iterator>
- #include<list>
- #include<map>
- #include<numeric>
- #include<queue>
- #include<set>
- #include<fstream>
- #include<stack>
- #include<strstream>
- #include<streambuf>
- #include<string>
- #include<utility>
- #include<vector>
- #include<iomanip>
- using namespace std;
- int g[18];int grid[18][18];
- int n,m;
- int B[(1<<17)+3];
- int setbit(int ind,int bit, int attack)
- {
- for(int i=ind+1;i<n;i++)
- {
- if(grid[ind][i])
- {
- B[bit|(1<<i)]=(attack|g[i]);
- setbit(i,bit|(1<<i),attack|g[i]);
- }
- }
- }
- int main()
- {
- int i,j,k;
- int cas,ks=0;
- while(cin>>n)
- {
- if(!n)break;
- ++ks;
- memset(g,0,sizeof g);
- for(i=0;i<=n;i++)grid[0][i]=1;
- for(i=1;i<=n;i++)
- {
- cin>>m;
- for(j=0;j<m;j++)
- {
- cin>>k;
- g[i]|=(1<<(k+1));
- grid[i][k+1]=1;
- }
- }
- setbit(0,0,0);
- int ans=0;
- int N=(1<<(n+1));
- int a;
- for(i=0;i<=N;i++)
- {
- a= __builtin_popcount(B[i]);
- ans=max(ans, a );
- }
- cout<<ans<<endl;
- }
- }
Add Comment
Please, Sign In to add comment