# | Submission time | Handle | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
48871 | 2018-05-19T11:40:56 Z | kriii | Duathlon (APIO18_duathlon) | C++17 | 1000 ms | 1048576 KB |
#include <stdio.h> #include <vector> #include <set> using namespace std; int N,M,X[200200],Y[200200],P[200200]; bool chk[300300]; vector<int> G[100100],V[300300]; int dep[200200],low[200200]; int sz[300300],ho[300300]; int find(int x) { if (P[x] != x) P[x] = find(P[x]); return P[x]; } void go(int x, int l) { low[x] = dep[x]; chk[x] = 1; for (auto &i : G[x]) if (i != l){ int y = (i == X[i] ? Y[i] : X[i]); if (!chk[y]){ dep[y] = dep[x] + 1; go(y,i); if (dep[x] > low[y]){ if (l != -1) P[find(l)] = find(i); } if (low[x] > low[y]) low[x] = low[y]; } else{ if (low[x] > dep[y]){ low[x] = dep[y]; if (l != -1) P[find(l)] = find(i); } } } } vector<int> comp; void gather(int x, int l) { comp.push_back(x); chk[x] = 1; for (auto &y : V[x]) if (y != l){ gather(y,x); } } long long ans; int bye(int x, int l, int c) { int s = sz[x]; for (auto &y : V[x]) if (y != l){ int n = bye(y,x,c); if (x >= N) ans -= (long long)n * (n - 1) * (ho[x] - 1); else ans -= (long long)(c - n) * (c - n - 1) * (ho[y] - 1); s += n; } return s; } int main() { scanf ("%d %d",&N,&M); for (int i=0;i<M;i++){ scanf ("%d %d",&X[i],&Y[i]); X[i]--; Y[i]--; G[X[i]].push_back(i); G[Y[i]].push_back(i); P[i] = i; } for (int i=0;i<N;i++) if (!chk[i]) go(i,-1); for (int i=0;i<N;i++){ set<int> s; for (auto &e : G[i]){ s.insert(find(e)); } if (s.size() == 1) sz[N+*s.begin()]++; else{ sz[i] = 1; for (auto &e : s){ V[i].push_back(N+e); V[N+e].push_back(i); } } } for (int i=0;i<N+M;i++) chk[i] = 0; for (int i=0;i<N+M;i++) if (!chk[i]){ comp.clear(); gather(i,-1); int C = 0; for (auto &x : comp) C += sz[x]; for (auto &x : comp){ ho[x] = sz[x]; for (auto &y : V[x]) ho[x] += sz[y]; } ans += (long long) C * (C - 1) * (C - 2); bye(i,-1,C); } printf ("%lld\n",ans); return 0; }
Compilation message
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Execution timed out | 1155 ms | 1048576 KB | Time limit exceeded |
2 | Halted | 0 ms | 0 KB | - |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Execution timed out | 1155 ms | 1048576 KB | Time limit exceeded |
2 | Halted | 0 ms | 0 KB | - |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Execution timed out | 1076 ms | 1048576 KB | Time limit exceeded |
2 | Halted | 0 ms | 0 KB | - |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Incorrect | 11 ms | 1048576 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Incorrect | 245 ms | 1048576 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Incorrect | 11 ms | 1048576 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Incorrect | 231 ms | 1048576 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Execution timed out | 1155 ms | 1048576 KB | Time limit exceeded |
2 | Halted | 0 ms | 0 KB | - |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Execution timed out | 1155 ms | 1048576 KB | Time limit exceeded |
2 | Halted | 0 ms | 0 KB | - |