Submission #883124

# Submission time Handle Problem Language Result Execution time Memory
883124 2023-12-04T15:11:06 Z AkibAzmain Connecting Supertrees (IOI20_supertrees) C++17
11 / 100
165 ms 23380 KB
#include <bits/stdc++.h>
using namespace std;
#include "supertrees.h"
#include <vector>

int construct(std::vector<std::vector<int>> p) {
  int n = p.size();
  std::vector<std::vector<int>> ans (n, vector < int > (n));
  vector < array < bool, 3 > > pt (n);
  vector < pair < int, int > > dsu (n);
  for (int i = 0; i < n; ++i) dsu[i].first = -1, dsu[i].second = 1;
  for (int i = 0; i < n; ++i)
    for (int j = i + 1; j < n; ++j)
      if (p[i][j])
        {
          if (p[i][j] == 3) return 0;
          pt[i][p[i][j]] = true;
          pt[j][p[i][j]] = true;
          int ci = i, cj = j;
          while (dsu[ci].first != -1) ci = dsu[ci].first;
          while (dsu[cj].first != -1) cj = dsu[cj].first;
          if (ci != cj)
            {
              if (dsu[ci].second < dsu[cj].second) swap (ci, cj);
              dsu[cj].first = ci;
              dsu[ci].second += dsu[cj].second;
            }
        }
  map < int, array < set < int >, 3 > > m;
  for (int i = 0; i < n; ++i)
    {
      int ci = i;
      while (dsu[ci].first != -1) ci = dsu[ci].first;
      for (int j = 0; j < 3; ++j) if (pt[i][j]) m[ci][j].insert (i);
    }
  for (auto &[xx, x] : m)
    {
      if (x[1].empty () && x[2].empty ()) continue;
      int p = -1;
      for (auto &y : x[1])
        {
          if (x[2].size () && !x[2].count (y)) return 0;
          if (p >= 0) ans[p][y] = ans[y][p] = 1;
          p = y;
        }
      if (x[2].empty ()) continue;
      if (x[2].size () - x[1].size () <= (1 + x[1].empty ())) return 0;
      int pp = p;
      for (auto &y : x[2])
        {
          if (x[1].count (y)) continue;
          if (p >= 0) ans[p][y] = ans[y][p] = 1;
          p = y;
          if (pp == -1) pp = y;
        }
      ans[p][pp] = ans[pp][p] = 1;
    }
  build (ans);
  return 1;
}

Compilation message

supertrees.cpp: In function 'int construct(std::vector<std::vector<int> >)':
supertrees.cpp:47:39: warning: comparison of integer expressions of different signedness: 'std::set<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   47 |       if (x[2].size () - x[1].size () <= (1 + x[1].empty ())) return 0;
      |           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~
# Verdict Execution time Memory Grader output
1 Correct 1 ms 344 KB Output is correct
2 Correct 0 ms 344 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
6 Correct 8 ms 1116 KB Output is correct
7 Correct 151 ms 22072 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 344 KB Output is correct
2 Correct 0 ms 344 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
6 Correct 8 ms 1116 KB Output is correct
7 Correct 151 ms 22072 KB Output is correct
8 Correct 0 ms 344 KB Output is correct
9 Correct 0 ms 348 KB Output is correct
10 Correct 0 ms 348 KB Output is correct
11 Correct 0 ms 348 KB Output is correct
12 Correct 7 ms 1272 KB Output is correct
13 Correct 165 ms 22364 KB Output is correct
14 Incorrect 0 ms 348 KB Answer gives possible 1 while actual possible 0
15 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
6 Correct 0 ms 348 KB Output is correct
7 Correct 0 ms 348 KB Output is correct
8 Correct 6 ms 1408 KB Output is correct
9 Correct 150 ms 23356 KB Output is correct
10 Correct 0 ms 348 KB Output is correct
11 Correct 1 ms 348 KB Output is correct
12 Correct 6 ms 1372 KB Output is correct
13 Correct 151 ms 23380 KB Output is correct
14 Incorrect 0 ms 348 KB Answer gives possible 1 while actual possible 0
15 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 39 ms 5952 KB Output is correct
5 Correct 160 ms 22024 KB Output is correct
6 Correct 159 ms 22376 KB Output is correct
7 Correct 151 ms 22020 KB Output is correct
8 Correct 0 ms 348 KB Output is correct
9 Correct 37 ms 5804 KB Output is correct
10 Correct 151 ms 22100 KB Output is correct
11 Correct 152 ms 22096 KB Output is correct
12 Correct 152 ms 22276 KB Output is correct
13 Correct 0 ms 348 KB Output is correct
14 Correct 0 ms 348 KB Output is correct
15 Correct 0 ms 348 KB Output is correct
16 Incorrect 15 ms 3216 KB Answer gives possible 0 while actual possible 1
17 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 344 KB Output is correct
2 Correct 0 ms 344 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
6 Correct 8 ms 1116 KB Output is correct
7 Correct 151 ms 22072 KB Output is correct
8 Correct 0 ms 344 KB Output is correct
9 Correct 0 ms 348 KB Output is correct
10 Correct 0 ms 348 KB Output is correct
11 Correct 0 ms 348 KB Output is correct
12 Correct 7 ms 1272 KB Output is correct
13 Correct 165 ms 22364 KB Output is correct
14 Incorrect 0 ms 348 KB Answer gives possible 1 while actual possible 0
15 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 344 KB Output is correct
2 Correct 0 ms 344 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
6 Correct 8 ms 1116 KB Output is correct
7 Correct 151 ms 22072 KB Output is correct
8 Correct 0 ms 344 KB Output is correct
9 Correct 0 ms 348 KB Output is correct
10 Correct 0 ms 348 KB Output is correct
11 Correct 0 ms 348 KB Output is correct
12 Correct 7 ms 1272 KB Output is correct
13 Correct 165 ms 22364 KB Output is correct
14 Incorrect 0 ms 348 KB Answer gives possible 1 while actual possible 0
15 Halted 0 ms 0 KB -