제출 #287318

#제출 시각아이디문제언어결과실행 시간메모리
287318ScarletS철인 이종 경기 (APIO18_duathlon)C++17
23 / 100
1160 ms1048580 KiB
#include <bits/stdc++.h> #define ll long long #define sz(x) (int)(x).size() using namespace std; const int MAXN = 1e5 + 7; vector<int> edges[MAXN]; ll subTree[MAXN]; bool done[MAXN]; vector<int> cur; ll ans=0; void dfs(int c, int p) { done[c]=1; cur.push_back(c); subTree[c]=1; for (int i : edges[c]) if (i!=p) { dfs(i,c); ans+=(subTree[i]*(subTree[c]-1)); //cout<<ans<<" "<<i<<" "<<c<<"\n"; subTree[c]+=subTree[i]; } } int main() { int n,m,u,v; cin>>n>>m; while (m--) { cin>>u>>v; edges[u].push_back(v); edges[v].push_back(u); } for (int i=1;i<=n;++i) if (!done[i]) { cur.clear(); dfs(i,0); //cout<<ans<<"\n"; for (int j : cur) ans+=((subTree[i]-subTree[j])*(subTree[j]-1)); } cout<<(ans<<1); }
#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...