Блог пользователя m_nigam01

Автор m_nigam01, история, 7 месяцев назад, По-английски

Hello, my basic thinking is if I can connect all elements in x iterations. then x+1, x+2... can be ignored.

https://codeforces.com/contest/1830/submission/234754662

https://codeforces.com/contest/1830/submission/234753813

This is my submission in python and c++ one I've converted using help from gpt.

Thank you for reply.

  • Проголосовать: нравится
  • 0
  • Проголосовать: не нравится

»
7 месяцев назад, # |
  Проголосовать: нравится +10 Проголосовать: не нравится

cond() has complexity $$$O(n^2 \log n)$$$.

Explanation

A faster solution would be just calling cond() once, with $$$m = n$$$, and return $$$i$$$ if the set size is $$$n$$$, but it's still too slow.

»
7 месяцев назад, # |
Rev. 3   Проголосовать: нравится 0 Проголосовать: не нравится

Because this

auto cond = [](const vector<pair<int, int>> &edges, int m, int n) {
        set<int> s{1};
        for (int i = 0; i < m; ++i)
        {
            for (auto [u, v] : edges)
            {
                if (s.count(u))
                {
                    s.insert(v);
                }
                if (s.count(v))
                {
                    s.insert(u);
                }
            }
        }
        return s.size() == n;
    };

works in $$$O(m \cdot n\log n)$$$ or, in general, $$$\Omega(ans \cdot n\log n)$$$ (that is, the cond() complexity is $$$O(n^2\log n)$$$, because $$$ans = O(n)$$$)