Submission #576201

#TimeUsernameProblemLanguageResultExecution timeMemory
576201VanillaConnecting Supertrees (IOI20_supertrees)C++17
0 / 100
1 ms356 KiB
#include <bits/stdc++.h> #include "supertrees.h" using namespace std; const int maxn = 1002; vector <int> ad1[maxn]; vector <int> ad2[maxn]; int d[maxn]; vector <int> comp; bitset <maxn> vis; bitset <maxn> vis1; bitset <maxn> in; int get_dad (int x) { return d[x] = (x == d[x] ? x: get_dad(d[x])); } void merge (int a, int b){ a = get_dad(a); b = get_dad(b); d[a] = b; } void dfs (int u) { vis[u] = 1; if (!in[u]) comp.push_back(u); for (int v: ad2[u]) { if (!vis[v]) { // merge(u, v); dfs(v); } } } void dfs1 (int u) { vis1[u] = 1; for (int v: ad1[u]) { if (!vis1[v]) { // b[get_dad(u)][v] = b[v][get_dad(u)] = 1; in[get_dad(u)] = in[v] = 1; merge(v, u); dfs1(v); } } } int construct(vector<vector<int>> p) { int n = p.size(); vector <vector <int> > b (n, vector <int> (n, 0)); for (int i = 0; i < n; i++){ d[i] = i; } for (int i = 0; i < n; i++){ for (int j = 0; j < i; j++){ if (p[i][j] == 2){ ad2[i].push_back(j); ad2[j].push_back(i); } else if (p[i][j] == 1) { ad1[i].push_back(j); ad1[j].push_back(i); } } } for (int i = 0; i < n; i++){ for (int j = i + 1; j < n; j++){ if (p[i][j] == 1) { b[i][j] = b[j][i] = 1; merge(i,j); } } } for (int i = 0; i < n; i++){ comp.clear(); comp.push_back(i); for (int j = i + 1; j < n; j++){ if (get_dad(i) != get_dad(j) && p[get_dad(i)][get_dad(j)] == 2) { comp.push_back(j); merge(i, j); } } if (comp.size() < 2) continue; for (int l = 0; l < comp.size(); l++){ int p1 = comp[l]; int p2 = comp[(l + 1) % comp.size()]; b[p1][p2] = b[p2][p1] = 1; } } // for (int i = 0; i < n; i++){ // if (!vis[i]) { // comp.clear(); // dfs(i); // if (comp.size() > 1) // for (int k = 0; k < comp.size(); k++){ // // if (!vis1[comp[k]] != 1) // b[comp[k]][comp[(k + 1) % comp.size()]] = b[comp[(k + 1) % comp.size()]][comp[k]] = 1; // } // } // } build(b); return 1; }

Compilation message (stderr)

supertrees.cpp: In function 'int construct(std::vector<std::vector<int> >)':
supertrees.cpp:84:21: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   84 |   for (int l = 0; l < comp.size(); l++){
      |                   ~~^~~~~~~~~~~~~
#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...