Submission #66738437
Source Code Expand
Copy
#include <string>#include <vector>#include <iostream>#include <utility>#include <math.h>#include <queue>#include <algorithm>#include <set>#include <unordered_map>#include <unordered_set>#include <cstring>#include <map>#include <deque>#include <stack>#include <climits>#include <numeric>using namespace std;using ll = long long;struct Edge {
#include <string> #include <vector> #include <iostream> #include <utility> #include <math.h> #include <queue> #include <algorithm> #include <set> #include <unordered_map> #include <unordered_set> #include <cstring> #include <map> #include <deque> #include <stack> #include <climits> #include <numeric> using namespace std; using ll = long long; struct Edge { int to; ll w; }; int main() { int n, m; if (!(cin >> n >> m)) return 0; vector<vector<Edge>> g(n + 1); for (int i = 0; i < m; ++i) { int a, b; ll w; cin >> a >> b >> w; g[a].push_back({b, w}); } const ll INF = -1; vector<ll> dist(n + 1, INF); array<ll, 61> basis{}; stack<int> st; dist[1] = 0; st.push(1); while (!st.empty()) { int v = st.top(); st.pop(); for (auto [to, w] : g[v]) { if (dist[to] == INF) { dist[to] = dist[v] ^ w; st.push(to); } else { ll cyc = dist[v] ^ dist[to] ^ w; for (int b = 60; b >= 0 && cyc; --b) { if (!(cyc & (1LL << b))) continue; if (!basis[b]) { basis[b] = cyc; break; } cyc ^= basis[b]; } } } } if (dist[n] == INF) { cout << -1 << '\n'; return 0; } ll ans = dist[n]; for (int b = 60; b >= 0; --b) { if (basis[b] && (ans > (ans ^ basis[b]))) ans ^= basis[b]; } cout << ans << '\n'; return 0; }
Submission Info
Submission Time | |
---|---|
Task | D - XOR Shortest Walk |
User | saitaman |
Language | C++ 20 (gcc 12.2) |
Score | 0 |
Code Size | 1614 Byte |
Status | CE |
Compile Error
Main.cpp: In function ‘int main()’: Main.cpp:39:19: error: variable ‘std::array<long long int, 61> basis’ has initializer but incomplete type 39 | array<ll, 61> basis{}; | ^~~~~