Submission #1293848

#TimeUsernameProblemLanguageResultExecution timeMemory
1293848hynmjBosses (BOI16_bosses)C++20
0 / 100
1 ms560 KiB
#include <bits/stdc++.h>
#define int long long
using namespace std;
const long long N = 5e3 + 5;
int a[N];
vector<int> graph[N];
bool vis[N];
int levels[N];
int n, m, e;
int bfs(int k)
{
    fill(levels, levels + n + 1, 0);
    fill(vis, vis + n + 1, 0);
    queue<int> q;
    q.push(k);
    int visited = 0;
    int level = 2;
    levels[1] = 1;
    while (q.size())
    {
        int k = q.front();
        q.pop();
        // if (vis[k])
        //     continue;
        // cout << "k == " << k << endl;
        vis[k] = 1;
        visited++;
        for (int i : graph[k])
        {
            if (vis[i])
                continue;
            vis[i] = 1;
            // cout << i << ' ';
            levels[level]++;
            q.push(i);
        }
        // cout << endl;
        level++;
    }
    if (visited != n)
    {
        return 1e18;
    }
    while (levels[level] == 0)
        level--;
    int ans = 0;
    for (int i = level, j = 1; i >= 0; i--, j++)
    {
        // cout << i << " " << levels[i] << " " << j << endl;

        ans += levels[i] * j;
    }
    return ans;
}
void solve()
{
    cin >> n;
    for (int i = 1; i <= n; i++)
    {
        cin >> m;
        for (int j = 0; j < m; j++)
        {
            cin >> e;
            graph[e].push_back(i);
        }
    }
    int ans = 1e18;
    // for (int i = 1; i <= n; i++)
    // {/
    ans = min(ans, bfs(4));
    cout << ans << endl;
    // }
    // for (int i = 0; i < n + 1; i++)
    // {
    //     cout << "i = " << i << endl;
    //     for (auto j : graph[i])
    //         cout << j << ' ';
    //     cout << endl;
    // }
}

signed main()
{
    ios_base::sync_with_stdio(0);
    cin.tie(NULL);
    cout.tie(NULL);
    int t = 1;
    // cin >> t;
    for (int i = 1; i <= t; i++)
    {
        // cout << "Case #" << i << ':' << ' ';
        solve();
        cout << endl;
    }
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...