Submission #797323

#TimeUsernameProblemLanguageResultExecution timeMemory
797323radaiosm7Duathlon (APIO18_duathlon)C++98
0 / 100
869 ms1048576 KiB
#include <bits/stdc++.h> using namespace std; #define X first #define Y second int n, m, i, a, b; long long ans, cc; vector<int> adj[100005]; bool visited[100005]; long long sub[100005]; void dfs1(int x, int p=-1) { visited[x] = true; sub[x] = 1LL; ++cc; for (auto y : adj[x]) { if (y == p) continue; dfs1(y, x); sub[x] += sub[y]; } } void dfs2(int x, int p=-1) { ans += 2LL*(sub[x]-1LL)*(cc-sub[x]); for (auto y : adj[x]) { if (y == p) continue; ans += 2LL*sub[y]*(sub[x]-1LL-sub[y]); dfs2(y, x); } } int main() { scanf("%d%d", &n, &m); for (i=0; i < m; ++i) { scanf("%d%d", &a, &b); adj[a].push_back(b); adj[b].push_back(a); } ans = 0LL; fill(visited+1, visited+n+1, false); for (i=1; i <= n; ++i) { if (!visited[i]) { cc = 0LL; dfs1(i); dfs2(i); } } printf("%lld\n", ans); return 0; }

Compilation message (stderr)

count_triplets.cpp: In function 'int main()':
count_triplets.cpp:34:8: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   34 |   scanf("%d%d", &n, &m);
      |   ~~~~~^~~~~~~~~~~~~~~~
count_triplets.cpp:37:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   37 |     scanf("%d%d", &a, &b);
      |     ~~~~~^~~~~~~~~~~~~~~~
#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...