Submission #983483

#TimeUsernameProblemLanguageResultExecution timeMemory
983483Alkaser_IDGame (APIO22_game)C++17
12 / 100
9 ms30296 KiB
#include "game.h" using namespace std; #include <bits/stdc++.h> int res = 0,K=0; set<int> scc[300005], rv[300005]; int c[300005]; bool b[300005]; void init(int n, int k) { K = k; for(int i=0;i<k;++i){ b[i] = true; c[i] = i; if(i < k-1) { scc[i].insert(i+1); } } for(int i=k;i<n;++i) c[i] = i; } bool vis[300005]; set<int> s; int sp = 0; vector<int> cv; inline void cycle() { int C = *s.begin(); set<int>::iterator it = s.begin(); for(++it;it!=s.end();++it){ for(set<int>::iterator j = scc[*it].begin();j != scc[*it].end();++j){ scc[C].insert(*j); rv[*j].insert(C); } c[*it] = C; for(set<int>::iterator jt = rv[*it].begin();jt != rv[*it].end();++jt){ scc[*jt].erase(*it); scc[*jt].insert(C); } } b[C] = (sp > 0); if(b[C]) res = 1; } inline void dfs(int i, int rt){ s.insert(i); if(i <K) ++sp; vis[i] = true; cv.push_back(i); for(set<int>::iterator j=scc[i].begin();j!=scc[i].end();++j){ if(*j == rt && !s.empty()) { cycle(); s.clear(); return; } if(s.empty()) return; if(!vis[*j]) dfs(*j,rt); } if(s.empty()) return; s.erase(i); if(i < K) --sp; } int add_teleporter(int u, int v) { if(u == v) res = 1; if(c[u] == c[v] || res == 1) return res; scc[c[u]].insert(c[v]); rv[c[v]].insert(c[u]); dfs(c[u],c[u]); for(int j=0;j<cv.size();++j) { vis[cv[j]] = false; } cv.clear(); return res; } /* 6 5 3 3 4 5 0 4 5 5 3 1 4 4 1 2 1 1 4 3 2 1 3 2 0 3 2 */

Compilation message (stderr)

game.cpp: In function 'int add_teleporter(int, int)':
game.cpp:61:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   61 |     for(int j=0;j<cv.size();++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...