제출 #1192026

#제출 시각아이디문제언어결과실행 시간메모리
1192026tinkerbells철인 이종 경기 (APIO18_duathlon)C++20
23 / 100
1128 ms1114112 KiB
#include <algorithm> #include <cmath> #include <cstring> #include <iostream> #include <iomanip> #include <limits.h> #include <set> #include <string> #include <queue> #include <stack> #include <unordered_map> #include <unordered_set> #include <vector> #include <deque> #include <map> #define SZ(x) int(x.size()) #define FR(i,a,b) for(int i=(a);i<(b);++i) #define FOR(i,n) FR(i,0,n) #define FAST ios::sync_with_stdio(0); cin.tie(0); cout.tie(0) #define A first #define B second typedef long long LL; typedef long double LD; typedef std::pair<int,int> PII; typedef std::pair<LL,LL> PLL; using namespace std; const int MAXN=1e5+5; vector<int> adj[MAXN]; LL siz[MAXN]; LL ans=0; void dfs(int u, int par){ siz[u]=1; for (auto to: adj[u]){ if (to==par) continue; dfs(to,u); siz[u]+=siz[to]; } } void cal(int u, int par, LL total){ LL calc=(total-1)*(total-1); for (auto to: adj[u]){ if (to==par){ calc-=(total-siz[u])*(total-siz[u]); } else{ calc-=(siz[to])*(siz[to]); cal(to, u, total); } } ans+=calc; } signed main(){ FAST; int n,m; cin>>n>>m; FOR(i,m){ int u,v; cin>>u>>v; adj[u].push_back(v); adj[v].push_back(u); } FR(i,1,n+1){ if (siz[i]==0){ dfs(i,-1); LL temp=siz[i]; cal(i,-1,temp); } } cout<<ans; return 0; }
#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...