제출 #50027

#제출 시각아이디문제언어결과실행 시간메모리
50027tmwilliamlin168철인 이종 경기 (APIO18_duathlon)C++14
0 / 100
226 ms34676 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long #define pii pair<int, int> #define fi first #define se second const int mxN=1e5; int n, m, dt=1, tin[mxN], low[mxN], sth, bccI; pii st[2*mxN]; ll sz1[2*mxN], sz2[mxN], ans; vector<int> adj1[mxN], adj2[2*mxN]; set<int> bccs[mxN]; bool vis[2*mxN]; void dfs1(int u, int p) { tin[u]=low[u]=dt++; for(int v : adj1[u]) { if(!tin[v]) { int lsth=sth; st[sth++]={u, v}; dfs1(v, u); low[u]=min(low[v], low[u]); if(low[v]>=tin[u]) { while(sth>lsth) { --sth; bccs[bccI].insert(st[sth].fi); bccs[bccI].insert(st[sth].se); } ++bccI; } } else if(v!=p) low[u]=min(tin[v], low[u]); } } void dfs2(int u) { // cout << "d2 " << u << endl; vis[u]=1; sz1[u]=u<n; ll n2=n-adj2[u].size()+1; for(int v : adj2[u]) { if(vis[v]) continue; dfs2(v); sz1[u]+=sz1[v]; if(u>=n) ans+=2*(sz1[v]-sz2[v]+adj2[u].size()-2)*(n2-sz1[v]); n2-=sz1[v]-1; } } int main() { ios_base::sync_with_stdio(0); cin.tie(0); cin >> n >> m; while(m--) { int u, v; cin >> u >> v, --u, --v; adj1[u].push_back(v); adj1[v].push_back(u); } dfs1(0, -1); for(int i=0; i<bccI; ++i) { ll bs=bccs[i].size(); for(int j : bccs[i]) { adj2[j].push_back(i+n); adj2[i+n].push_back(j); sz2[j]+=bs-1; } ans+=bs*(bs-1)*(bs-2)+2*(bs-1)*(bs-1)*(n-bs)+bs*(bs-1)*(bs-1); } for(int i=0; i<n; ++i) ans-=sz2[i]*sz2[i]; // cout << bccI << " " << ans << endl; // for(int i=0; i<n; ++i) // cout << sz2[i] << " "; // cout << endl; for(int i=0; i<bccI; ++i) if(!vis[i+n]) dfs2(i+n); cout << ans; }
#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...