Submission #858916

#TimeUsernameProblemLanguageResultExecution timeMemory
858916teamariaaSpeedrun (RMI21_speedrun)C++17
48 / 100
60 ms1788 KiB
#include <bits/stdc++.h> #include "speedrun.h" using namespace std; #define MAX_N 1000 int n; bitset <MAX_N + 1> viz; vector <int> degree; void assign1(int a[], int b[]) { setHintLen(n); for(int i = 1; i < n; i ++) { setHint(a[i], b[i], 1); setHint(b[i], a[i], 1); } } void setNumber(int poz, int x, int y) { while(y) { if(y & 1) setHint(x, poz, 1); y >>= 1; poz --; } } void assign2(int a[], int b[]) { if(n == 1) return; int center; degree.resize(n + 1, 0); setHintLen(10); for(int i = 1; i < n; i ++) { degree[a[i]] ++; degree[b[i]] ++; if(degree[a[i]] == 1) { center = b[i]; setNumber(10 * degree[a[i]], a[i], b[i]); } if(degree[b[i]] == 1) { center = a[i]; setNumber(10 * degree[b[i]], b[i], a[i]); } } for(int i = 1; i <= 10; i ++) setHint(center, i, 0); } void assign3(int a[], int b[]) { degree.resize(n + 1, 0); setHintLen(20); for(int i = 1; i < n; i ++) { degree[a[i]] ++; degree[b[i]] ++; setNumber(10 * degree[a[i]], a[i], b[i]); setNumber(10 * degree[b[i]], b[i], a[i]); } } void assign4() { } void dfs(int node, int parent) { viz[node] = 1; for(int i = 1; i <= n; i ++) if(getHint(i) && !viz[i]) { goTo(i); dfs(i, node); } goTo(parent); } void speedrun1(int root) { dfs(root, root); } int getNumber(int poz, int node) { int start = poz - 10 + 1, nr = 0; for(int i = start; i <= poz; i ++) { nr <<= 1; nr += getHint(i); } return nr; } void speedrun2(int root) { int nr = getNumber(10, root), center = root; if(nr) { goTo(nr); center = nr; } for(int i = 1; i <= n ; i ++) { if(i != center) { goTo(i); goTo(center); } } } void dfs2(int node, int parent) { viz[node] = 1; for(int i = 1; i <= 2; i ++) { int next = getNumber(i * 10, node); if(!viz[next] && next) { // cerr << next << " sad" << endl; goTo(next); dfs2(next, node); } } // cerr << node << " " << parent << " sad" << endl; goTo(parent); } void speedrun3(int root) { dfs2(root, root); } void assignHints(int subtask, int N, int A[], int B[]) { n = N; if(subtask == 1) { assign1(A, B); return; } if(subtask == 2) { assign2(A, B); return; } if(subtask == 3) { assign3(A, B); return; } } void speedrun(int subtask, int N, int start) { n = N; if(subtask == 1) { speedrun1(start); return; } if(subtask == 2) { speedrun2(start); return; } if(subtask == 3) { speedrun3(start); return; } }

Compilation message (stderr)

speedrun.cpp: In function 'void assign2(int*, int*)':
speedrun.cpp:60:16: warning: 'center' may be used uninitialized in this function [-Wmaybe-uninitialized]
   60 |         setHint(center, i, 0);
      |         ~~~~~~~^~~~~~~~~~~~~~
#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...