【题解】CF1600F Party Organization

知道 Ramsey 数就很简单,注意到 \(R(6,3)\le 46\),所以对于 \(n\ge 46\) 的情况必然可以构造出一组合法的解,因此直接把 \(n\)\(50\)\(\min\) 然后暴力枚举即可。

namespace Loyalty
{
    int mp[64][64];
    inline void init() {}
    inline void main([[maybe_unused]] int _ca, [[maybe_unused]] int _atc)
    {
        int n, m;
        cin >> n >> m;
        while (m--)
        {
            int a, b;
            cin >> a >> b;
            if (a <= 50 && b <= 50)
                mp[a][b] = mp[b][a] = 1;
        }
        n = min(n, 50ll);
        for (int i = 1; i <= n; ++i)
            for (int j = i + 1; j <= n; ++j)
                for (int k = j + 1; k <= n; ++k)
                    for (int p = k + 1; p <= n; ++p)
                        for (int o = p + 1; o <= n; ++o)
                        {
                            int cnt = mp[i][j] + mp[i][k] + mp[i][p] + mp[i][o] + mp[j][k] + mp[j][p] + mp[j][o] + mp[k][p] + mp[k][o] + mp[p][o];
                            if (cnt == 10 || !cnt)
                            {
                                cout << i << ' ' << j << ' ' << k << ' ' << p << ' ' << o << '\n';
                                return;
                            }
                        }
        cout << -1 << '\n';
    }
}
posted @ 2026-02-02 17:40  0103abc  阅读(8)  评论(0)    收藏  举报