Submission #797032

#TimeUsernameProblemLanguageResultExecution timeMemory
797032penguinmanThousands Islands (IOI22_islands)C++17
1.75 / 100
31 ms6604 KiB
#include "islands.h"

#include <bits/stdc++.h>
#include <variant>

using std::cin;
using std::cout;
using std::endl;
using std::vector;
using std::string;
using ll = int;
using vi = vector<ll>;
using vii = vector<vi>;
using pii = std::pair<ll,ll>;

#define rep(i,j,k) for(ll i=ll(j); i<ll(k); i++)
#define REP(i,j,k) for(ll i=ll(j); i<=ll(k); i++)
#define per(i,j,k) for(ll i=ll(j); i>=ll(k); i--)
#define all(a) a.begin(),a.end()
#define pb emplace_back
#define ln "\n"

std::variant<bool, std::vector<int>> find_journey(int N, int M, std::vector<int> U, std::vector<int> V) {
  vii edge(N), index(N);
  rep(i,0,M){
    edge[U[i]].pb(V[i]);
    index[U[i]].pb(i);
  }
  if(edge[0].size() <= 1) return false;
  vi ans;
  vii nedge(N), nindex(N);
  {
    vector<bool> flag(N);
    std::queue<ll> que;
    que.push(0);
    flag[0] = true;
    while(!que.empty()){
      ll now = que.front(); que.pop();
      rep(i,0,edge[now].size()){
        ll next = edge[now][i];
        if(flag[next]) continue;
        flag[next] = true;
        nedge[now].pb(next);
        nindex[now].pb(index[now][i]);
        que.push(next);
      }
    }
  }
  std::function<void(ll)> dfs = [&](ll now){
    rep(i,0,nedge[now].size()){
      ll next = nedge[now][i];
      ans.pb(nindex[now][i]);
      dfs(next);
      ans.pb(nindex[now][i]^1);
    }
  };
  dfs(0);
  ll len = ans.size();
  rep(i,0,len) ans.pb(ans[i]^1);
  return ans;
}
#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...