The euro-pull circuit.
Each number as a node, can be connected to the end connected to a forward edge.
Then run it from the beginning.
#include <cstdio> #include <algorithm> #include <iostream> #include <cctype> #include <queue > #include <cstring>using namespace std; #define REP (I, L, R) for (int. i=l; i<=r; i++) #define DOWN (i, L, R) for (i NT I=l; i>=r; i--) #define Travel (x) for (Edge *p=fir[x]; p; p=p->n) #define MAXN 12345#define MAXM 123456#define inf 0x7fffffff#define CLR (x, C) memset (x, C, sizeof (x)) inline int read () {int x=0; char Ch=getchar (); while (!isdigit (CH)) Ch=getchar (); Digit (CH)) {x=x*10+ch-' 0 '; Ch=getchar ();} return x;} int N=read (), M=1, top, S[maxn];bool b[maxn];bool dfs (int x) {s[++top]=x; B[x]=1;if (top==m) return true;if (!b[(x*2)%m] &A mp;& Dfs ((x*2)%m) return true;if (!b[(x*2)%m+1] && dfs ((x*2)%m+1) return true;--top; b[x]=0; return false;} int main () {Rep (i, 1, n) m*=2; printf ("%d", m);d FS (0); m/=2; Rep (i, 1, top) printf ("%d", s[i]/m);}
BZOJ-3033 Too drum talent