Submission #980229

#TimeUsernameProblemLanguageResultExecution timeMemory
980229vjudge1Longest Trip (IOI23_longesttrip)C++17
15 / 100
807 ms2600 KiB
#include "longesttrip.h" #include <bits/stdc++.h> using namespace std; using ll = long long; using vll = vector <ll>; using dll = deque <ll>; using vi = vector <int>; const ll MAXN = 256+16; vll adj[MAXN]; bool mat[MAXN][MAXN]; ll comp[MAXN]; void dfs (ll u, ll col, ll &sz) { if (comp[u]) return; comp[u] = col; sz++; for (ll v : adj[u]) { dfs(v, col, sz); } } vi longest_trip (int n, int d) { fill(adj, adj+n+5, vll({})); fill(comp, comp+n+5, 0); for (ll u = 0; u < n; u++) { mat[u][u] = false; for (ll v = u+1; v < n; v++) { if (are_connected(vi({ int(u) }), vi({ int(v) }))) { adj[u].push_back(v); adj[v].push_back(u); mat[u][v] = true; mat[v][u] = true; } else { mat[u][v] = false; mat[v][u] = false; } } } ll c = 1; vll sz; for (ll u = 0; u < n; u++) { if (comp[u]) continue; sz.push_back(0); dfs(u, c++, sz.back()); } assert(c == 2 || c == 3); if (c == 2) { vll fr, bk; fr.push_back(0); vector <char> vis(n, false); vis[0] = true; for (ll v = 0; v < n; v++) { if (mat[0][v]) { vis[v] = true; bk.push_back(v); break; } } assert(fr.size() == 1); assert(bk.size() == 1); ll skip = 0; for (ll u = 1; u < n; u++) { if (u == fr[0] || u == bk[0]) { skip++; continue; } if (mat[u][fr.back()]) { fr.push_back(u); } else if (mat[u][bk.back()]) { bk.push_back(u); } else assert(false); } // assert(skip == 0); vi ans(fr.rbegin(), fr.rend()); for (ll i : bk) ans.push_back(i); return ans; } else if (c == 3) { assert(sz.size() == 2); if (sz[0] > sz[1]) { vi ans; for (ll u = 0; u < n; u++) { if (comp[u] == 1) { ans.push_back(u); } } return ans; } else { vi ans; for (ll u = 0; u < n; u++) { if (comp[u] == 2) { ans.push_back(u); } } return ans; } } }

Compilation message (stderr)

longesttrip.cpp: In function 'vi longest_trip(int, int)':
longesttrip.cpp:41:9: warning: control reaches end of non-void function [-Wreturn-type]
   41 |     vll sz;
      |         ^~
#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...