Submission #1202209

#TimeUsernameProblemLanguageResultExecution timeMemory
1202209dzuizzGame (APIO22_game)C++20
30 / 100
4059 ms7292 KiB
// Subtask 1
#include "game.h"
#include <bits/stdc++.h>
using namespace std;

constexpr int MAXN=1e5+5;
vector<int> g[MAXN],tg[MAXN];
queue<int> q;
bool vi[MAXN];
int N,K;

void init(int n, int k) {
  N=n,K=k;

  for(int i=0;i<K-1;++i){
    g[i].emplace_back(i+1);
    tg[i+1].emplace_back(i);
  }
}

int add_teleporter(int u, int v) {
  g[u].emplace_back(v);
  tg[v].emplace_back(u);

  int mini=INT_MAX,maxi=-1;

  // find min goto
  memset(vi,0,sizeof vi);
  q.emplace(v); vi[v]=1;
  while(q.size()){
    int i=q.front(); q.pop();
    if(i<K) mini=min(mini,i);
    for(auto&j:g[i]) if(!vi[j]){
      q.emplace(j); vi[j]=1;
    }
  }

  // find max comefrom
  memset(vi,0,sizeof vi);
  q.emplace(u); vi[u]=1;
  while(q.size()){
    int i=q.front(); q.pop();
    if(i<K) maxi=max(maxi,i);
    for(auto&j:tg[i]) if(!vi[j]){
      q.emplace(j); vi[j]=1;
    }
  }

  //cerr<<mini<<" "<<maxi<<'\n';
  return mini <= maxi;
}

#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...