제출 #1173660

#제출 시각아이디문제언어결과실행 시간메모리
1173660SpyrosAlivThousands Islands (IOI22_islands)C++20
0 / 100
1 ms328 KiB
#include <bits/stdc++.h> using namespace std; int n, m; vector<int> u, v; vector<vector<int>> av; bool cycle; vector<bool> vis; void dfs(int node) { if (cycle) return; vis[node] = true; vector<int> targs; for (int i = 1; i < (int)av[node].size(); i++) { targs.push_back(v[av[node][i]]); } sort(targs.begin(), targs.end()); int s = targs.size(); for (int i = 1; i < s; i++) { if (targs[i] == targs[i-1] || vis[targs[i]]) { cycle = true; return; } } if (vis[targs[0]]) { cycle = true; return; } for (int i = 0; i < s; i++) { dfs(targs[i]); if (cycle) return; } } variant<bool, vector<int>> find_journey(int N, int M, vector<int> U, vector<int> V) { // tree -> impossible n = N; m = M; u = U; v = V; av.clear(); av.resize(n); vis.assign(n, false); for (int i = 0; i < m; i++) { av[u[i]].push_back(i); } cycle = false; dfs(0); if (n == 2) { int cnt1 = 0, cnt2 = 0; vector<int> a, b; for (int i = 0; i < m; i++) { if (u[i] == 0) { cnt1++; a.push_back(i); } else { cnt2++; b.push_back(i); } } if (cnt1 < 2 || cnt2 < 1) return false; vector<int> ans = {a[0], b[0], a[1], a[0], b[0], a[1]}; return ans; } else { vector<int> goB, goC, b, c; for (int i = 0; i < m; i++) { if (u[i] == 0) { if (v[i] == 1) goB.push_back(i); else if (v[i] == 2) goC.push_back(i); } else if (u[i] == 1 && v[i] == 0) b.push_back(i); else if (u[i] == 2 && v[i] == 0) c.push_back(i); } if (goB.size() && goC.size() && b.size() && c.size()) { vector<int> ans = {goB[0], b[0], goC[0], c[0], b[0], goB[0], c[0], goC[0]}; return ans; } } if (!cycle) return false; }

컴파일 시 표준 에러 (stderr) 메시지

islands.cpp: In function 'std::variant<bool, std::vector<int, std::allocator<int> > > find_journey(int, int, std::vector<int>, std::vector<int>)':
islands.cpp:82:1: warning: control reaches end of non-void function [-Wreturn-type]
   82 | }
      | ^
#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...