제출 #1320079

#제출 시각아이디문제언어결과실행 시간메모리
1320079madamadam3Thousands Islands (IOI22_islands)C++20
0 / 100
714 ms1388144 KiB
#include "islands.h" #include <bits/stdc++.h> using namespace std; using vi = vector<int>; struct state { int moves, cur, lst; vi steps, config; }; int n, m; vector<vi> adj; vi istate; variant<bool, vi> find_journey(int N, int M, vi U, vi V) { n = N; m = M; istate.assign(n, 0); adj.resize(n); for (int i = 0; i < M; i++) { adj[U[i]].push_back(i); adj[V[i]].push_back(i); } queue<state> q; q.push(state{0, 0, -1, vector<int>(), vector<int>(m, 0)}); int lim = 5*M, step = 0; while (!q.empty() && step++ < lim) { auto st = q.front(); q.pop(); if (st.cur == 0 && st.moves > 0 && *max_element(st.config.begin(), st.config.end()) == 0) { return st.steps; } for (auto v : adj[st.cur]) { if (v != st.lst && ((U[v] == st.cur && st.config[v] == 0) || (V[v] == st.cur && st.config[v] == 1))) { auto ns = state{st.moves, st.cur, st.lst, st.steps, st.config}; ns.moves++; ns.cur = (U[v] == st.cur ? V[v] : U[v]); ns.config[v] = 1-ns.config[v]; ns.steps.push_back(v); ns.lst = v; q.push(ns); } } } return false; }
#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...