제출 #1284859

#제출 시각아이디문제언어결과실행 시간메모리
1284859Muhammad_AneeqIsland Hopping (JOI24_island)C++20
65 / 100
5 ms864 KiB
#include "island.h" #include "iostream" #include "bits/stdc++.h" using namespace std; int const MAXN=310; int vis[MAXN]={}; int val[MAXN][MAXN]={}; bool nei[MAXN][MAXN]={}; int deg[MAXN]={}; int par[MAXN]={}; int ask(int i,int j) { if (val[i][j]==0) val[i][j]=query(i,j); return val[i][j]; } int root(int n) { return (par[n]==n?n:par[n]=root(par[n])); } void merge(int u,int v) { u=root(u); v=root(v); par[v]=u; } void solve(int N, int L) { for (int i=1;i<=N;i++) par[i]=i; for (int i=1;i<=N;i++) { int j=1; while (j<N) { int z=ask(i,j); if (z<i) { if (nei[z][i]==0) break; j++; continue; } if (root(i)==root(z)) { j++; break; } if (ask(z,deg[z]+1)==i) { nei[i][z]=1; merge(i,z); deg[i]++; deg[z]++; } else break; j++; } } set<pair<int,int>>ed; for (int i=1;i<=N;i++) { for (int j=i+1;j<=N;j++) if (nei[i][j]) ed.insert({i,j}); } for (auto [i,j]:ed) { // cout<<i<<' '<<j<<endl; answer(i,j); } }
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...