Submission #997715

#TimeUsernameProblemLanguageResultExecution timeMemory
997715MarwenElarbiPolitical Development (BOI17_politicaldevelopment)C++17
100 / 100
1256 ms309588 KiB
#include <bits/stdc++.h>
using namespace std;
#define fi first
#define se second
#define ll long long
#define pb push_back
#define ii pair<int,int>
const int nax=5e4+5;
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
vector<bitset<nax>> adj(nax);
int n,k;
int dfs(int x){
    int lst=x;
    auto cur=adj[x];
    int cnt=0;
    while(true){
        cnt++;
        cur&=adj[lst];
        vector<int> tab;
        for (int i = cur._Find_first(); (int)tab.size() < 10 && i < n; i=cur._Find_next(i))
        {
            tab.pb(i);
        }
        if(tab.size()==0) break;
        lst=tab[uniform_int_distribution<int>(0,(int)tab.size()-1)(rng)];
    }
    return cnt;
}
int main(){
    /*#ifndef ONLINE_JUDGE
        freopen("input.txt", "r", stdin);
        freopen("output.txt", "w", stdout);
    #endif*/
    cin>>n>>k;
    bool test=false;
    for (int i = 0; i < n; ++i)
    {
        int s;
        cin>>s;
        for (int j = 0; j < s; ++j)
        {
            int x;
            cin>>x;
            adj[i][x]=1;
        }
    }
    vector<int> per(n);
    for (int i = 0; i < n; ++i)
    {
        per[i]=i;
    }
    int ans=0;
    for (int i = 0; i < n*5; ++i)
    {
        if(i%n==0) shuffle(per.begin(),per.end(),rng);
        ans=max(ans,dfs(per[i%n]));
    }
    cout <<ans<<endl;
}

Compilation message (stderr)

politicaldevelopment.cpp: In function 'int main()':
politicaldevelopment.cpp:35:10: warning: unused variable 'test' [-Wunused-variable]
   35 |     bool test=false;
      |          ^~~~
#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...