Submission #783099

#TimeUsernameProblemLanguageResultExecution timeMemory
7830991075508020060209tcPolitical Development (BOI17_politicaldevelopment)C++14
39 / 100
1889 ms26404 KiB
#include<bits/stdc++.h>
using namespace std;
//#define int long long
#define X first
#define Y second
int n;int K;
set<int>st[50100];
int tbl[5010][5010];

void slvk3(){
int ans=1;
for(int i=0;i<=n-1;i++){
    if(st[i].size()>=2){ans=2;break;}
}
for(int i=0;i<=n-1;i++){
    for(auto it=st[i].begin();(*it)<i;it++){
        int v=(*it);
    }
}


}


signed main(){
cin.tie(0);
ios_base::sync_with_stdio(0);
cin>>n>>K;
for(int i=0;i<n;i++){
    int d;
    cin>>d;
    for(int j=1;j<=d;j++){
        int v;
        cin>>v;
        if(v<i){
            if(st[v].find(i)==st[v].end()){continue;}
        }
        st[i].insert(v);
     //   tbl[i][v]=1;
    }
   // tbl[i][i]=1;
    st[i].insert(i);
}

if(K<=3){
    //slvk3();
}

for(int i=n-1;i>=0;i--){
        vector<int>vc;
    for(auto it=st[i].begin();it!=st[i].end();it++){
        int v=*it;
        if(v>i){
            if(st[v].find(i)==st[v].end()){vc.push_back(v);}
        }
    }
    for(int j=0;j<vc.size();j++){
        st[i].erase(vc[j]);
    }
}


int ans=1;


for(int i=0;i<n;i++){
    vector<int>vc;
    for(auto it=st[i].begin();it!=st[i].end();it++){
        vc.push_back(*it);
    }
    if(vc.size()>K*3){continue;}
    for(int A=0;A<(1<<vc.size());A++){
        if(__builtin_popcount(A)<=ans){continue;}
        if(__builtin_popcount(A)>K){continue;}
        int ok=1;
       // cout<<A<<"A\n";
        for(int j=0;j<vc.size();j++){
           // cout<<vc[j]<<" "<<ok<<endl;;
            if(!ok){break;}
            if(((A&(1<<j))!=0)){
                for(int k=0;k<vc.size();k++){
                    if(!ok){break;}
                    if( ((A&(1<<k))==0) ){continue;}
                    //cout<<A<<" "<<k<<endl;
                    if(st[vc[j]].find(vc[k])==st[vc[j]].end()){ok=0;}
                   // cout<<A<<" "<<vc[j]<<" "<<vc[k];
                    //if(tbl[vc[j]][vc[k]]==0){ok=0;}
                    //cout<<" "<<ok<<endl;
                }
            }
        }
        //cout<<ok<<endl;
        if((ok&&(__builtin_popcount(A)>ans)) ){
            ans=__builtin_popcount(A);
        }
    }
}
cout<<ans<<endl;
//return 0;
/*
for(int i=0;i<ans.size();i++){
    cout<<ans[i]<<" ";
}*/

}

Compilation message (stderr)

politicaldevelopment.cpp: In function 'void slvk3()':
politicaldevelopment.cpp:17:13: warning: unused variable 'v' [-Wunused-variable]
   17 |         int v=(*it);
      |             ^
politicaldevelopment.cpp:11:5: warning: variable 'ans' set but not used [-Wunused-but-set-variable]
   11 | int ans=1;
      |     ^~~
politicaldevelopment.cpp: In function 'int main()':
politicaldevelopment.cpp:57:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   57 |     for(int j=0;j<vc.size();j++){
      |                 ~^~~~~~~~~~
politicaldevelopment.cpp:71:17: warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   71 |     if(vc.size()>K*3){continue;}
      |        ~~~~~~~~~^~~~
politicaldevelopment.cpp:77:22: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   77 |         for(int j=0;j<vc.size();j++){
      |                     ~^~~~~~~~~~
politicaldevelopment.cpp:81:30: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   81 |                 for(int k=0;k<vc.size();k++){
      |                             ~^~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...