Submission #126847

#TimeUsernameProblemLanguageResultExecution timeMemory
126847zoooma13Meetings (JOI19_meetings)C++14
29 / 100
3039 ms10640 KiB
#include "bits/stdc++.h"
#include "meetings.h"
//#include "grader.cpp"
using namespace std;

#define MAX_N 2003

int comm_anc[MAX_N][MAX_N];
set <int> anc[MAX_N] ,sbtree[MAX_N];

void Solve(int N) {
    for(int i=0; i<N; i++)
        sbtree[0].insert(i) ,anc[i].insert(0)
       ,sbtree[i].insert(i) ,anc[i].insert(i);
    for(int u=1; u<N; u++)
    for(int v=u+1; v<N; v++){
        int o = comm_anc[v][u] = comm_anc[u][v] = Query(0 ,u ,v);
        sbtree[o].insert(u) ,sbtree[o].insert(v);
        anc[v].insert(o) ,anc[u].insert(o);
    }

    for(int i=1; i<N; i++){
        pair <int ,int> mi = {1e9 ,-1};
        for(auto&u : anc[i])
            if(u != i)
                mi = min(mi ,make_pair((int)sbtree[u].size() ,u));

        //cout << i << ' ' << mi.second << endl;
        Bridge(min(i ,mi.second) ,max(i ,mi.second));
    }
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...