Submission #217800

#TimeUsernameProblemLanguageResultExecution timeMemory
217800Vimmer철인 이종 경기 (APIO18_duathlon)C++14
5 / 100
1095 ms13096 KiB
#include <bits/stdc++.h> #define F first #define S second #define sz(x) int(x.size()) #define pb push_back #define N 100005 #define M ll(998244353) using namespace std; typedef long double ld; typedef long long ll; typedef short int si; vector <int> g[N]; bool mk[N], mkr[N]; int ans, i, j, n, m; ll anser, siz[N]; void dfs(int v, int p) { for (auto it : g[v]) { if (it == p) continue; dfs(it, v); siz[v] += siz[it]; } for (auto it : g[v]) anser += (siz[v] - siz[it]) * siz[it]; siz[v]++; } bool dostig(int v, int to) { if (mk[v]) return 0; if (v == to) return 1; mk[v] = 1; bool f = 0; for (auto it : g[v]) f |= dostig(it, to); mk[v] = 0; if (f && v != i && !mkr[v]) {mkr[v] = 1; ans++;} return f; } int main() { ios_base::sync_with_stdio(0); istream::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin >> n >> m; for (int i = 0; i < m; i++) { int x, y; cin >> x >> y; g[x].pb(y); g[y].pb(x); } if (n == m + 1) { dfs(1, -1); cout << anser << endl; exit(0); } ans = 0; for (i = 1; i <= n; i++) for (j = 1; j <= n; j++) if (i != j){for (int u = 0; u < 51; u++) mkr[u] = 0; dostig(i, j);} cout << ans << endl; }
#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...