Submission #544015

#TimeUsernameProblemLanguageResultExecution timeMemory
544015LoboICC (CEOI16_icc)C++17
7 / 100
343 ms804 KiB
#include "icc.h" #include<bits/stdc++.h> using namespace std; const long long inf = (long long) 1e18 + 10; const int inf1 = (int) 1e9 + 10; #define int long long #define dbl long double #define endl '\n' #define sc second #define fr first #define mp make_pair #define pb push_back #define all(x) x.begin(), x.end() const int maxn = 110; // int edgset[maxn][maxn]; // int qtddd; // void setRoad(int u, int v) { // cout << u << " " << v << endl; // if(--qtddd != 0) { // int x,y; cin >> x >> y; // edgset[x][y] = edgset[y][x] = 1; // } // } // int query(int sza, int szb, int32_t a[], int32_t b[]) { // int ans = 0; // for(int i = 0; i < sza; i++) { // for(int j = 0; j < szb; j++) { // ans|= edgset[a[i]][b[j]]; // } // } // return ans; // } int n, ds[maxn], col[maxn], g[maxn][maxn]; vector<int> vc[2][maxn]; int find(int v) { if(v == ds[v]) return v; return ds[v] = find(ds[v]); } void run(int32_t N) { srand(time(0)); n = N; for(int i = 1; i <= n; i++) { ds[i] = i; vc[0][i].pb(i); col[i] = 0; } for(int qt = 0; qt < n-1; qt++) { set<pair<int,int>> par; for(int i = 1; i <= n; i++) { for(int j = i+1; j <= n; j++) { if(find(i) != find(j)) { par.insert(mp(i,j)); } } } assert(!(par.size() == 0 && qt <= 40)); for(auto X : par) { int u = X.fr; int v = X.sc; int32_t qra[1]; qra[0] = u; int32_t qrb[1]; qrb[0] = v; // cout << qt << " " << u << " " << v << " ---- " << query(1,1,qra,qrb) << endl; if(query(1,1,qra,qrb)) { //coloca o v no u int pu = find(u); int pv = find(v); // assert(pu != pv); ds[pv] = pu; //os caras com col igual a col[v] ficam com col[u]^1 int colv = col[v]; for(auto x : vc[colv][pv]) { vc[col[u]^1][pu].pb(x); col[x] = col[u]^1; } for(auto x : vc[colv^1][pv]) { vc[col[u]][pu].pb(x); col[x] = col[u]; } setRoad(u,v); g[u][v] = g[v][u] = 1; break; } } } } // int32_t main() { // ios::sync_with_stdio(false); cin.tie(0); // freopen("in.in", "r", stdin); // // freopen("out.out", "w", stdout); // int N; cin >> N; // qtddd = N-1; // int x,y; cin >> x >> y; // edgset[x][y] = edgset[y][x] = 1; // run(N); // // int v = find(1); // // for(auto x : vc[0][v]) { // // cout << x << " "; // // }cout << endl; // // for(auto x : vc[1][v]) { // // cout << x << " "; // // }cout << endl; // }
#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...