제출 #815696

#제출 시각아이디문제언어결과실행 시간메모리
815696Ozy철인 이종 경기 (APIO18_duathlon)C++17
23 / 100
1102 ms1048576 KiB
#include <bits/stdc++.h> using namespace std; #define lli long long int #define debug(a) cout << #a << " = " << a << endl #define debugsl(a) cout << #a << " = " << a << ", " #define rep(i,a,b) for(int i = (a); i <= (b); i++) #define repa(i,a,b) for(int i = (a); i >= (b); i--) #define pll pair<lli,lli> #define MAX 100000 lli n,m,a,b,res; vector<lli> hijos[MAX+2]; lli tam[MAX+2],m_tam[MAX+2],vis[MAX+2]; void precalcula(lli pos, lli padre){ vis[pos] = 1; tam[pos] = 1; for(auto h : hijos[pos]) { if (h == padre) continue; precalcula(h,pos); tam[pos] += tam[h]; } } void def(lli pos, lli padre, lli val) { m_tam[pos] = val; for(auto h : hijos[pos]) { if (h == padre) continue; def(h,pos,val); } } int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cin >> n >> m; rep(i,1,m) { cin >> a >> b; hijos[a].push_back(b); hijos[b].push_back(a); } rep(i,1,n) { if (vis[i]) continue; precalcula(i,0); vis[i] = 0; } rep(i,1,n) if(!vis[i]) def(i,0,tam[i]); rep(act,1,n) { for (auto h : hijos[act]) { if (tam[h] > tam[act]) a = m_tam[act]-tam[act]; else a = tam[h]; res += a * (m_tam[act] -a -1); } } cout << res; return 0; } //tener cuidado con los bosques
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...