# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
129117 | 2019-07-11T17:10:32 Z | davitmarg | Political Development (BOI17_politicaldevelopment) | C++17 | 3000 ms | 1528 KB |
/*DavitMarg*/ #include <iostream> #include <algorithm> #include <cmath> #include <vector> #include <string> #include <cstring> #include <map> #include <set> #include <queue> #include <iomanip> #include <stack> #include <cassert> #include <iterator> #include <bitset> #include <fstream> #define mod 1000000007ll #define LL long long #define LD long double #define MP make_pair #define PB push_back #define all(v) v.begin(),v.end() using namespace std; int n,k,used[50004],c[50004],ind[50004],s[50004],f[(1<<11)+5],ans=1; vector<int> g[50004]; queue<int> q; int main() { cin>>n>>k; for(int i=0;i<n;i++) { int d,to; cin>>d; while(d--) { scanf("%d",&to); g[i].PB(to); } s[i]=g[i].size(); } for(int i=1;i<(1<<k);i++) { for(int j=k-1;j>=0;j--) if((i&(1<<j))) { f[i]=j; c[i]++; } } for(int i=0;i<n;i++) if(s[i]<=k) q.push(i); while(!q.empty()) { int v=q.front(); q.pop(); while(used[v]) continue; used[v]=1; vector<int> a,mask; for(int i=0;i<g[v].size();i++) { int to=g[v][i]; s[to]--; if(!used[to]) { if(s[to] <= k) q.push(to); a.PB(to); } } for(int i=0;i<a.size();i++) ind[a[i]]=i; mask.resize(a.size()); for(int i=0;i<a.size();i++) for(int j=0;j<g[a[i]].size();j++) { int to=g[a[i]][j]; if(!used[to]) mask[i]|=(1<<ind[to]); } vector<int> dp((1<<k)+10); dp[0]=1; for(int m=1;m<(1<<a.size());m++) { if((((1<<f[m])^m)&(mask[f[m]]))==((1<<f[m])^m) && dp[m^(1<<f[m])]) { dp[m]=1; ans=max(ans,c[m]+1); } } } cout<<ans<<endl; return 0; } /* 5 4 4 1 2 3 4 3 0 2 3 3 0 1 3 3 0 1 2 1 0 */
Compilation message
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Execution timed out | 3048 ms | 1528 KB | Time limit exceeded |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Execution timed out | 3048 ms | 1528 KB | Time limit exceeded |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 5 ms | 1528 KB | Output is correct |
2 | Execution timed out | 3061 ms | 1528 KB | Time limit exceeded |
3 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Execution timed out | 3048 ms | 1528 KB | Time limit exceeded |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Execution timed out | 3048 ms | 1528 KB | Time limit exceeded |
2 | Halted | 0 ms | 0 KB | - |