Submission #150834

#TimeUsernameProblemLanguageResultExecution timeMemory
150834お前はもう死んでいる (#200)Lokahian Relics (FXCUP4_lokahia)C++17
0 / 100
7 ms768 KiB
#include "lokahia.h" #include <bits/stdc++.h> using namespace std; const int N = 205; int dsu[N]; int trace(int u) { return dsu[u] < 0 ? u : dsu[u] = trace(dsu[u]); } void connect(int u, int v) { if ((u = trace(u)) == (v = trace(v))) return; if (dsu[u] > dsu[v]) swap(u, v); int tmp = dsu[v]; dsu[u] += dsu[v]; dsu[v] = u; } int FindBase(int N){ vector<vector<int> > s, t, de; vector<int> la; for(int i = 0; i < N; i++) { dsu[i] = -1; s.push_back({i}); } while(s.size() > 1){ for(int i = 1; i < s.size(); i += 2){ int u = -1; bool chk = trace(s[i - 1][0]) == trace(s[i][0]); if (!chk) u = CollectRelics(s[i - 1][0], s[i][0]); if(chk || u > -1){ connect(s[i - 1][0], s[i][0]); if (u > -1) connect(s[i - 1][0], u); for(int& x : s[i - 1]) s[i].push_back(x); t.push_back(s[i]); } else { de.push_back(s[i - 1]); de.push_back(s[i]); } } if(s.size() & 1){ de.push_back(s.back()); la = s.back(); } swap(s, t); t.clear(); } int sz = 0; if(s.empty()) s.push_back(la); else sz = s[0].size(); if(s[0].empty()) return -1; int res = 0; for(int i = 1; i < s[0].size(); i++){ res = max(res, CollectRelics(s[0][i], s[0][0])); } for(auto& x : de){ int rrr = CollectRelics(x[0], s[0][0]); if(rrr != -1){ res = max(res, rrr); for(int i = 1; i < x.size(); i++){ rrr = CollectRelics(x[i], s[0][0]); res = max(res, rrr); } sz += x.size(); } } if(sz > N / 2) return res; return -1; }

Compilation message (stderr)

lokahia.cpp: In function 'void connect(int, int)':
lokahia.cpp:20:6: warning: unused variable 'tmp' [-Wunused-variable]
  int tmp = dsu[v];
      ^~~
lokahia.cpp: In function 'int FindBase(int)':
lokahia.cpp:35:26: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         for(int i = 1; i < s.size(); i += 2){
                        ~~^~~~~~~~~~
lokahia.cpp:70:22: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(int i = 1; i < s[0].size(); i++){
                    ~~^~~~~~~~~~~~~
lokahia.cpp:78:30: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
             for(int i = 1; i < x.size(); i++){
                            ~~^~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...