# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
110932 | 2019-05-13T07:47:50 Z | Just_Solve_The_Problem | 철인 이종 경기 (APIO18_duathlon) | C++11 | 151 ms | 17568 KB |
#include <bits/stdc++.h> #define ll long long using namespace std; const int N = (int)1e5 + 7; ll ans; vector<int> gr[N], ngr[N]; vector<int> order; int n, m; int used[N], col[N], tin[N], tout[N], fup[N]; int head[N], sz[N], ssz[N]; int cl, tiktak; void precalc(int v, int pr = 0) { used[v] = 1; tin[v] = fup[v] = ++tiktak; for (int to : gr[v]) { if (to == pr) continue; if (!used[to]) { precalc(to, v); fup[v] = min(fup[v], fup[to]); } else { fup[v] = min(fup[v], tin[to]); } if (tin[v] >= fup[to]) { // not bridge col[v] = col[to]; } } if (!col[v]) col[v] = ++cl; tout[v] = tiktak; sz[col[v]]++; head[col[v]] = v; } int root; void predfs(int v, int pr) { ssz[v] = sz[v]; for (int to : ngr[v]) { if (to == pr) continue; predfs(to, v); ssz[v] += ssz[to]; } } void dfs(int v, int pr) { used[v] = 1; for (int to : ngr[v]) { if (to == pr) continue; ans += (ssz[root] - ssz[v]) * 2LL * ssz[to]; dfs(to, v); } ans += sz[v] * (sz[v] - 1) * (sz[v] - 2); ans += (ssz[root] - sz[v]) * 2LL * ((sz[v] - 1) + (sz[v] - 1) * 1LL * (sz[v] - 2)); } main() { scanf("%d %d", &n, &m); for (int i = 1, u, v; i <= m; i++) { scanf("%d %d", &u, &v); gr[u].push_back(v); gr[v].push_back(u); } for (int i = 1; i <= n; i++) { if (!used[i]) { precalc(i); } } for (int i = 1; i <= n; i++) { for (int to : gr[i]) { if (col[i] != col[to]) { ngr[col[i]].push_back(col[to]); } } } memset(used, 0, sizeof used); for (int i = 1; i <= cl; i++) { if (!used[i]) { root = i; predfs(i, i); dfs(i, i); } } cout << ans; }
Compilation message
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 7 ms | 5376 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 7 ms | 5376 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 129 ms | 17568 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 8 ms | 5504 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 131 ms | 15640 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 7 ms | 5504 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 151 ms | 15608 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 7 ms | 5376 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 7 ms | 5376 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |