제출 #375101

#제출 시각아이디문제언어결과실행 시간메모리
375101wiwihoMeetings (JOI19_meetings)C++14
29 / 100
3068 ms1680 KiB
#include "meetings.h" #include <bits/stdc++.h> #define eb emplace_back #define iter(a) a.begin(), a.end() #define printv(a, b) { \ for(auto pv : a) b << pv << " "; \ b << "\n"; \ } using namespace std; typedef long long ll; vector<vector<int>> anc; bool comp(int a, int b){ return anc[a].size() < anc[b].size(); } void ans(int u, int v){ if(u > v) swap(u, v); //cerr << u << " " << v << "\n"; Bridge(u, v); } void Solve(int n){ vector<int> dpt(n); anc.resize(n, vector<int>(1)); anc[0].clear(); for(int i = 1; i < n; i++){ for(int j = i + 1; j < n; j++){ int r = Query(0, i, j); if(r != i) anc[i].eb(r); if(r != j) anc[j].eb(r); } } vector<int> tmp(n); for(int i = 0; i < n; i++){ tmp[i] = i; sort(iter(anc[i])); anc[i].resize(unique(iter(anc[i])) - anc[i].begin()); dpt[i] = anc[i].size(); //cerr << i << " "; //printv(anc[i], cerr); } sort(iter(tmp), comp); for(int i : tmp){ if(i == 0) continue; int mn = 0; for(int j : anc[i]){ if(dpt[j] > dpt[mn]) mn = j; } ans(i, mn); } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...