Submission #829470

#TimeUsernameProblemLanguageResultExecution timeMemory
829470radaiosm7Mechanical Doll (IOI18_doll)C++17
2 / 100
27 ms8744 KiB
#include "doll.h" #include <bits/stdc++.h> using namespace std; int i, n, m, s, g, j, kk; vector<int> C; vector<int> X; vector<int> Y; vector<int> adj[100005]; bool visited[100005]; bool finished[200005]; vector<vector<int> > groups; vector<int> tmp; bool vis; void create_switch(int i) { int num = (int)adj[i].size(); if (num == 0) C[i] = i; else if (num == 1) C[i] = adj[i][0]; } void create_circuit(int M, vector<int> A) { m = M; n = (int)A.size(); fill(finished, finished+n+1, false); C.resize(M+1); X.clear(); Y.clear(); do { vis = false; tmp.clear(); fill(visited, visited+m+1, false); for (i=0; i < n-1; ++i) { if (!finished[i] && !visited[A[i]]) { finished[i] = true; visited[A[i]] = true; tmp.push_back(i); vis = true; } } groups.push_back(tmp); } while(vis); g = (int)groups.size(); for (i=0; i < g; ++i) { kk = (int)groups[i].size(); for (j=0; j < kk; ++j) adj[A[groups[i][j]]].push_back(A[groups[i][j]+1]); } adj[A[n-1]].push_back(0); C[0] = A[0]; for (i=1; i <= M; ++i) create_switch(i); answer(C, X, Y); }
#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...