Submission #980738

# Submission time Handle Problem Language Result Execution time Memory
980738 2024-05-12T11:05:26 Z TheEpicCowOfLife Island Hopping (JOI24_island) C++17
29 / 100
6 ms 1368 KB
#include <bits/stdc++.h>

#include "island.h"

using namespace std;

vector<int> g[305];

int d[305][305];

int ua[305];
vector<int> ug[305];

void dfs(int x, int par, int root, int depth){
  d[root][x] = depth;
  d[x][root] = depth;
  for (int tgt : g[x]){
    if (tgt == par) continue;
    dfs(tgt,x,root,depth+1);
  }
}

int f(int x){
  if (ua[x] == x) return x;
  return ua[x] = f(ua[x]);
}

void merge(int x, int y){
  int fx = f(x);
  int fy = f(y);
  if (f(x) == f(y)){
    return;
  }
  if (ug[fx].size() > ug[fy].size()){
    swap(fx,fy);
    swap(x,y);
  }
  g[x].push_back(y);
  g[y].push_back(x);

  answer(x,y);
  for (int tgt : ug[fx]){
    ug[fy].push_back(tgt);
    dfs(tgt,-1,tgt,0);
  }
  ua[fx] = fy;
  ug[fx].clear();
}

// "All neighbours known"
bool ann[305];

int gi[305];

void solve(int N, int L) {

  for (int i = 1; i <= N; i++){
    ug[i].push_back(i);
    ua[i] = i;
    gi[i] = 1;
  }

  for (int i = N; i > 1; i--){
    int ret = query(i,1);
    merge(i,ret);
  }
  ann[1] = true;

  for (int cur_ann = 1; cur_ann < N; cur_ann++){
    for (int i = 1; i <= cur_ann; i++){
      for (int j: g[i]){
        if (ann[j]) continue;
        bool can_expand = true;
        for (int tgt: g[j]){
          if (!ann[tgt]) {
            can_expand = false;
            break;
          }
        }
        if (can_expand){
          int ret = query(j,++gi[j]);
          if (d[ret][j] == 2){
            ann[j] = true;
          }
          else{
            merge(ret,j);
          }
        }
      }
    }
    ann[cur_ann+1] = true;
  }
  // int variable_example = query(1, 1);
  // for (int i = 2; i <= N; i++) {
  //   answer(1, i);
  // }


}
# Verdict Execution time Memory Grader output
1 Incorrect 0 ms 344 KB Wrong Answer [2]
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 0 ms 344 KB Wrong Answer [2]
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 5 ms 1028 KB Output is correct
2 Correct 5 ms 864 KB Output is correct
3 Correct 4 ms 1112 KB Output is correct
4 Correct 4 ms 960 KB Output is correct
5 Correct 5 ms 1112 KB Output is correct
6 Correct 4 ms 872 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 600 KB Output is correct
2 Correct 5 ms 872 KB Output is correct
3 Correct 5 ms 1112 KB Output is correct
4 Correct 4 ms 1200 KB Output is correct
5 Correct 5 ms 1032 KB Output is correct
6 Correct 5 ms 1112 KB Output is correct
7 Correct 4 ms 1112 KB Output is correct
8 Correct 4 ms 872 KB Output is correct
9 Correct 4 ms 856 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 5 ms 856 KB Output is correct
2 Correct 4 ms 980 KB Output is correct
3 Correct 5 ms 1108 KB Output is correct
4 Correct 4 ms 1112 KB Output is correct
5 Correct 4 ms 1368 KB Output is correct
6 Correct 4 ms 980 KB Output is correct
7 Correct 4 ms 1368 KB Output is correct
8 Correct 6 ms 872 KB Output is correct
9 Correct 4 ms 1180 KB Output is correct
# Verdict Execution time Memory Grader output
1 Incorrect 0 ms 344 KB Wrong Answer [2]
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 0 ms 344 KB Wrong Answer [2]
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 5 ms 1028 KB Output is correct
2 Correct 5 ms 864 KB Output is correct
3 Correct 4 ms 1112 KB Output is correct
4 Correct 4 ms 960 KB Output is correct
5 Correct 5 ms 1112 KB Output is correct
6 Correct 4 ms 872 KB Output is correct
7 Incorrect 3 ms 1112 KB Wrong Answer [5]
8 Halted 0 ms 0 KB -