Submission #982235

#TimeUsernameProblemLanguageResultExecution timeMemory
982235Jawad_Akbar_JJDuathlon (APIO18_duathlon)C++17
8 / 100
1018 ms11964 KiB
#include <iostream> #include <vector> using namespace std; #define int long long const int N = 1e5 + 10; vector<int> nei[N]; bool seen[55][55][55]; int d[N],Seen[N], cur = 1, ver, ed; void dfs1(int u,vector<int> v){ v.push_back(u); for (int i : v) seen[v[0]][u][i] = 1; for (int i : nei[u]){ bool ns = 1; for (int j : v) if (j == i) ns = false; if (ns) dfs1(i,v); } } void sub1(int n){ for (int i=1;i<=n;i++) dfs1(i,{}); int ans = 0; for (int s = 1;s <= n; s++) for (int c = 1;c <= n; c++) for (int f = 1;f <= n; f++) if ( !(s == c or s == f or c == f) ) ans += seen[s][f][c]; cout<<ans<<'\n'; exit(0); } void dfs2(int u){ Seen[u] = cur; ver++; ed += d[u]; for (int i : nei[u]) if (Seen[i] != cur) dfs2(i); } void sub3(int n){ int ans = 0; for (int i=1;i<=n;i++) if (Seen[i] != cur){ ver = 0; ed = 0; dfs2(i); ed >>= 1; if (ed == ver - 1) for (int j=1;j<=ver;j++) ans += (j - 1) * (ver - j) * 2; else ans += ver * (ver-1) * (ver-2); } cout<<ans<<'\n'; exit(0); } signed main(){ int n,m; cin>>n>>m; int mx = 0; for (int i=1;i<=m;i++){ int a,b; cin>>a>>b; nei[a].push_back(b); nei[b].push_back(a); d[a]++; d[b]++; mx = max(mx,max(d[a],d[b])); } if (mx <= 2) sub3(n); if (n <= 10) sub1(n); }
#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...