제출 #766875

#제출 시각UTC-0아이디문제언어결과실행 시간메모리
7668752023-06-26 08:27:05onjo0127조이터에서 친구를 만드는건 재밌어 (JOI20_joitter2)C++17
100 / 100
1287 ms160660 KiB
#include <bits/stdc++.h>
#define sz(V) ((int)V.size())
using namespace std;
using pii = pair<int, int>;
using ll = long long;
int P[100009];
set<int> I[100009], A[100009], II[100009], OO[100009];
ll ans;
int root(int x) {
if(P[x] == x) return x;
return P[x] = root(P[x]);
}
ll f(int x) {
return 1LL * sz(A[x]) * (sz(I[x]) + sz(A[x]) - 1);
}
void merg(int u, int v) {
u = root(u); v = root(v);
if(u == v) return;
if(sz(A[u]) + sz(I[u]) + sz(II[u]) + sz(OO[u]) > sz(A[v]) + sz(I[v]) + sz(II[v]) + sz(OO[v])) swap(u, v);
ans -= f(u) + f(v);
for(auto& it: A[u]) if(I[v].find(it) != I[v].end()) I[v].erase(it);
for(auto& it: I[u]) if(A[v].find(it) == A[v].end()) I[v].insert(it);
for(auto& it: A[u]) A[v].insert(it);
set<int> Q;
for(auto& it: II[u]) if(it != u && it != v) {
OO[it].erase(u);
 
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

컴파일 시 표준 에러 (stderr) 메시지

joitter2.cpp: In function 'int main()':
joitter2.cpp:47:17: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   47 |  int N, M; scanf("%d%d", &N, &M);
      |            ~~~~~^~~~~~~~~~~~~~~~
joitter2.cpp:53:18: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   53 |   int u, v; scanf("%d%d", &u, &v);
      |             ~~~~~^~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...