Submission #128724

#TimeUsernameProblemLanguageResultExecution timeMemory
128724SamAndPolitical Development (BOI17_politicaldevelopment)C++17
39 / 100
3025 ms8164 KiB
#include <bits/stdc++.h>
using namespace std;
const int N = 50004;

int n, k;
vector<int> a[N];

int ans;

vector<int> b;

bool c[N];
vector<int> v;

void rec(int i)
{
    ans = max(ans, (int)v.size());
    if (i == b.size())
    {
        return;
    }
    rec(i + 1);
    int q = 0;
    for (int j = 0; j < a[b[i]].size(); ++j)
    {
        int h = a[b[i]][j];
        if (c[h])
            ++q;
    }
    if (q != v.size())
        return;
    c[b[i]] = true;
    v.push_back(b[i]);
    rec(i + 1);
    v.pop_back();
    c[b[i]] = false;
}

void solv3()
{
    for (int i = 1; i <= n; ++i)
    {
        b.clear();
        for (int j = 0; j < a[i].size(); ++j)
            b.push_back(a[i][j]);
        c[i] = true;
        v.push_back(i);
        rec(0);
        v.pop_back();
        c[i] = false;
    }
    cout << ans << endl;
}

void rec1(int i)
{
    ans = max(ans, (int)v.size());
    if (i == b.size())
    {
        return;
    }
    rec1(i + 1);
    for (int j = 0; j < v.size(); ++j)
    {
        if (!binary_search(a[b[i]].begin(), a[b[i]].end(), v[j]))
            return;
    }
    c[b[i]] = true;
    v.push_back(b[i]);
    rec1(i + 1);
    v.pop_back();
    c[b[i]] = false;
}

void solv5()
{
    for (int i = 1; i <= n; ++i)
    {
        b.clear();
        for (int j = 0; j < a[i].size(); ++j)
            b.push_back(a[i][j]);
        c[i] = true;
        v.push_back(i);
        rec1(0);
        v.pop_back();
        c[i] = false;
    }
    cout << ans << endl;
}

int main()
{
    scanf("%d%d", &n, &k);
    int maxu = 0;
    for (int i = 0; i < n; ++i)
    {
        int s;
        scanf("%d", &s);
        maxu = max(maxu, s);
        while (s--)
        {
            int x;
            scanf("%d", &x);
            a[i].push_back(x);
        }
        sort(a[i].begin(), a[i].end());
    }
    solv5();
    return 0;
}

Compilation message (stderr)

politicaldevelopment.cpp: In function 'void rec(int)':
politicaldevelopment.cpp:18:11: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     if (i == b.size())
         ~~^~~~~~~~~~~
politicaldevelopment.cpp:24:23: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for (int j = 0; j < a[b[i]].size(); ++j)
                     ~~^~~~~~~~~~~~~~~~
politicaldevelopment.cpp:30:11: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     if (q != v.size())
         ~~^~~~~~~~~~~
politicaldevelopment.cpp: In function 'void solv3()':
politicaldevelopment.cpp:44:27: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         for (int j = 0; j < a[i].size(); ++j)
                         ~~^~~~~~~~~~~~~
politicaldevelopment.cpp: In function 'void rec1(int)':
politicaldevelopment.cpp:58:11: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     if (i == b.size())
         ~~^~~~~~~~~~~
politicaldevelopment.cpp:63:23: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for (int j = 0; j < v.size(); ++j)
                     ~~^~~~~~~~~~
politicaldevelopment.cpp: In function 'void solv5()':
politicaldevelopment.cpp:80:27: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         for (int j = 0; j < a[i].size(); ++j)
                         ~~^~~~~~~~~~~~~
politicaldevelopment.cpp: In function 'int main()':
politicaldevelopment.cpp:93:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d%d", &n, &k);
     ~~~~~^~~~~~~~~~~~~~~~
politicaldevelopment.cpp:98:14: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
         scanf("%d", &s);
         ~~~~~^~~~~~~~~~
politicaldevelopment.cpp:103:18: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
             scanf("%d", &x);
             ~~~~~^~~~~~~~~~
#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...