// 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 time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |