Submission #742811

#TimeUsernameProblemLanguageResultExecution timeMemory
742811PixelCatDuathlon (APIO18_duathlon)C++14
23 / 100
58 ms22800 KiB
#include <bits/stdc++.h> #define For(i, a, b) for(int i = a; i <= b; i++) #define Forr(i, a, b) for(int i = a; i >= b; i--) #define F first #define S second #define eb emplace_back #define all(x) x.begin(), x.end() #define sz(x) ((int)x.size()) #define int LL using namespace std; using LL = long long; using pii = pair<int, int>; const int MAXN = 100010; vector<int> adj[MAXN]; int siz[MAXN]; void dfs_siz(int n, int p) { siz[n] = 1; for(auto &i:adj[n]) if(i != p) { assert(!siz[i]); dfs_siz(i, n); siz[n] += siz[i]; } } int ans; #define C(x) ((x) * ((x) - 1)) void dfs_ans(int n, int p, int tot_n) { ans += C(tot_n - 1); for(auto &i:adj[n]) { int s = siz[i]; if(i == p) s = tot_n - siz[n]; ans -= C(s); if(i != p) dfs_ans(i, n, tot_n); } } int32_t main() { ios::sync_with_stdio(false); cin.tie(0); // =^-w-^= nya int n, m; cin >> n >> m; while(m--) { int a, b; cin >> a >> b; adj[a].eb(b); adj[b].eb(a); } ans = 0; For(i, 1, n) if(!siz[i]) { dfs_siz(i, i); dfs_ans(i, i, siz[i]); } cout << ans << "\n"; return 0; } /* 4 3 1 2 2 3 3 4 4 4 1 2 2 3 3 4 4 2 */
#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...