Submission #1284309

#TimeUsernameProblemLanguageResultExecution timeMemory
1284309hynmjThe Ties That Guide Us (CEOI23_incursion)C++20
Compilation error
0 ms0 KiB
#include "incursion.h" #include <bits/stdc++.h> using namespace std; const int N = 4.6e4; vector<int> graph[N]; vector<int> m; int dp[N]; int dist[N]; bool located; int calc(int node, int parent = 0) { dp[node] = 1; dist[node] = dist[parent] + 1; for (int i : graph[node]) { if (i == parent) continue; dp[node] += calc(i, node); } } int up(int node, int parent = 0) { m[node - 1] = 0; vector<pair<int, int>> p; for (int i : graph[node]) { p.push_back({dp[i], i}); } sort(p.begin(), p.end()); for (int i = 0; i < p.size(); i++) { if (p[i].second == parent) { m[node - 1] = i; if (m[node - 1] > 1) m[node - 1] = 1; } } for (int i : graph[node]) { if (i == parent) continue; dp[node] -= dp[i]; dp[i] += dp[node]; up(i, node); dp[i] -= dp[node]; dp[node] += dp[i]; } } std::vector<int> mark(std::vector<std::pair<int, int>> &G, int safe) { int n = G.size(); m.resize(n); for (auto i : G) { graph[i.first].push_back(i.second); graph[i.second].push_back(i.first); } calc(safe); up(safe); return m; } vector<int> possibilites(int node, int t) { vector<pair<int, int>> p; for (int i : graph[node]) { p.push_back({dp[i], i}); } sort(p.begin(), p.end()); vector<int> possible; if (t == 1) t = p.size() - 1; for (auto i : p) { if (p[t].first == i.first) { possible.push_back(i.second); } } return possible; } int now(int node, int t, int parent) { vector<int> p = possibilites(node,t); if (p.size() == 0) { if (p[0] ==parent) { visit(parent); located = 1; return 1; } int i = p[0]; dp[node] -= dp[i]; dp[i] += dp[node]; now(i, visit(i), node); } for (int i = p.size()-1; i >=0;i--) { dp[node] -= dp[i]; dp[i] += dp[node]; if (now(p[i], visit(p[i]), node)) { return 1; } visit(node); dp[i] -= dp[node]; dp[node] += dp[i]; } located = 1; return 1; } void locate(std::vector<std::pair<int, int>> G, int curr, int t) { int n = G.size(); m.resize(n + 1); for (auto i : G) { graph[i.first].push_back(i.second); graph[i.second].push_back(i.first); } calc(curr); now(curr,t,0); }

Compilation message (stderr)

incursion.cpp: In function 'int calc(int, int)':
incursion.cpp:20:1: warning: no return statement in function returning non-void [-Wreturn-type]
   20 | }
      | ^
incursion.cpp: In function 'int up(int, int)':
incursion.cpp:49:1: warning: no return statement in function returning non-void [-Wreturn-type]
   49 | }
      | ^
/usr/bin/ld: /tmp/cckcRlSi.o: in function `main':
interface.cpp:(.text.startup+0x194): undefined reference to `mark(std::vector<std::pair<int, int>, std::allocator<std::pair<int, int> > >, int)'
collect2: error: ld returned 1 exit status