Submission #57870

#TimeUsernameProblemLanguageResultExecution timeMemory
57870MatheusLealVICC (CEOI16_icc)C++17
18 / 100
534 ms876 KiB
#include "icc.h" #define N 105 #include <bits/stdc++.h> using namespace std; set<int> grafo[N]; int pai[N], peso[N]; int Find(int x) { if(x == pai[x]) return x; return pai[x] = Find(pai[x]); } void join(int a, int b) { a = Find(a), b = Find(b); if(a == b) return; if(peso[a] > peso[b]) pai[b] = a; else if(peso[a] < peso[b]) pai[a] = b; else pai[a] = b, peso[b] ++; } void run(int n) { for(int i = 1; i <= n; i++) { pai[i] = i; } for(int i = 1; i < n; i++) { vector<int> ok; vector<int> valores; for(int a = 1; a <= n; a++) valores.push_back(a); random_shuffle(valores.begin(), valores.end()); for(auto a: valores) { int esq[N], dir[N], id = 0; if(ok.size() >= 2 or (ok.size() == 1 and Find(a) == Find(ok[0]))) continue; esq[0] = a; for(int b = 1; b <= n; b++) { if(Find(a) != Find(b)) { dir[id] = b; id ++; } } if(query(1, id, esq, dir) > 0) { ok.push_back(a); } } join(ok[0], ok[1]); //cout<<i<<" "<<ok.size()<<" "<<" ROAD "<<ok[0]<<" "<<ok[1]<<"\n"; setRoad(ok[0], ok[1]); } }
#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...