| # | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
|---|---|---|---|---|---|---|---|
| 1284825 | Muhammad_Aneeq | Island Hopping (JOI24_island) | C++20 | 0 ms | 0 KiB |
#include "island.h"
#include "iostream"
using namespace std;
void solve(int N, int L)
{
vector<int>z;
vector<pair<int,int>>ed;
int P[N+10]={0};
P[N]=-1;
bool vis[N+10]={};
int g=query(N,1);
P[g]=N;
ed.push_back({N,g});
int y=query(g,1);
vis[N]=1;
if (y!=N)
{
ed.push_back({y,g});
P[y]=g;
vis[g]=1;
z.push_back(y);
for (auto i:z)
{
vis[i]=1;
int f=query(i,1);
if (f==P[i])
{
f=query(i,2);
if (vis[f])
break;
}
ed.push_back({i,f});
P[f]=i;
z.push_back(f);
}
}
y=query(N,2);
if(!vis[y])
{
z={};
ed.push_back({y,N});
P[y]=N;
vis[N]=1;
z.push_back(y);
for (auto i:z)
{
vis[i]=1;
int f=query(i,1);
if (f==P[i])
{
f=query(i,2);
if (vis[f])
break;
}
ed.push_back({i,f});
P[f]=i;
z.push_back(f);
}
}
for (auto [i,j]:ed)
answer(i,j);
}
