# | 제출 시각UTC-0 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
1065963 | epicci23 | 열쇠 (IOI21_keys) | C++17 | 54 ms | 78916 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "bits/stdc++.h"
#define all(v) v.begin() , v.end()
#define sz(a) (int)a.size()
using namespace std;
const int N = 3e5 + 5;
map<int,vector<int>> v[N];
set<int> s[N];
vector<int> cur,par(N,0),vis(N,0),mark(N,0);
vector<int> comp[N];
void merge_info(int a,int b){
a=par[a],b=par[b];
if(a==b) return;
mark[a]|=mark[b];
if(sz(s[a])<sz(s[b])) swap(s[a],s[b]);
if(sz(comp[a])<sz(comp[b])) swap(comp[a],comp[b]);
for(int x:comp[b]){
comp[a].push_back(x);
par[x]=a;
}
comp[b].clear();
for(int u:s[b]) s[a].insert(u);
s[b].clear();
int sA=0,sB=0;
for(auto x:v[a]) sA+=sz(x.second);
for(auto x:v[b]) sB+=sz(x.second);
if(sA<sB) swap(v[a],v[b]);
for(auto x:v[b]) for(int u:x.second) v[a][x.first].push_back(u);
v[b].clear();
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |