Submission #1369540

#TimeUsernameProblemLanguageResultExecution timeMemory
1369540solution6312Multi Communication 2 (JOI26_multi)C++17
5 / 100
28 ms1816 KiB
#include "multi.h"
#include <iostream>
#include <vector>
#include <cassert>
#include <tuple>
#include <algorithm>
using namespace std;
using ll=long long;
using ull=unsigned long long;
using pii=pair<int, int>;
using ti3=tuple<int, int, int>;

namespace
{
    const int MN=64;
    int N, dsu[MN];
    int find(int x)
    {
        if (dsu[x]==x) return x;
        else return dsu[x]=find(dsu[x]);
    }
    bool unite(int x, int y)
    {
        x=find(x); y=find(y);
        if (x==y) return 0;
        dsu[y]=x; return 1;
    }
    ull find(vector<vector<int>> G)
    {
        N=G.size();
        for (int i=0; i<N; i++) dsu[i]=i;
        vector<ti3> E;
        for (int i=0; i<N; i++)
        {
            for (int j=0; j<N; j++)
            {
                E.push_back({i, j, G[i][j]});
            }
        }
        sort(E.begin(), E.end(), [](ti3 x, ti3 y) { return get<2>(x)<get<2>(y); });
        ull ans=0;
        for (auto [u, v, w]:E) if (unite(u, v)) ans+=w;
        return ans;
    }
}

vector<ull> strategy(int N, int r, int i, vector<ull> A, vector<ull> B)
{
    //cerr<<"STRATEGY "<<N<<' '<<r<<' '<<i<<endl;
    //cerr<<"A: "; for (ull i:A) cerr<<i<<' '; cerr<<endl;
    //cerr<<"B: "; for (ull i:B) cerr<<i<<' '; cerr<<endl;
    assert(N<=64);
    if (r)
    {
        vector<vector<int>> G(N, vector<int>(N, 0));
        for (int i=0; i<N; i++)
        {
            for (int j=0; j<N; j++)
            {
                G[i][j]=((B[i]>>j)&1);
            }
        }
        return {find(G)};
    }
    ull x=0;
    for (int i=0; i<N; i++) if (A[i]) x|=(1ull<<i);
    vector<ull> vec;
    for (int i=0; i<N; i++) vec.push_back(x);
    //for (ull i:vec) cerr<<i<<' '; cerr<<endl;
    return vec;
}
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...