标签:
题目链接:hiho 第51周
思路:首先特判n=1的情况,无输出。对于其他的按有向欧拉路径的求法把欧拉路径求出来以后,第一个按位全输出,接下来的的(2^n-1)个点,只需要输出二进制最后一位就可以了。详细的思路参考hiho 第51周
/************************************************************** Problem:hiho 第51周 User: youmi Language: C++ Result: Accepted Time:17ms Memory:1MB ****************************************************************/ //#pragma comment(linker, "/STACK:1024000000,1024000000") //#include<bits/stdc++.h> #include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #include <map> #include <stack> #include <sstream> #include <cmath> #include <queue> #include <string> #include <vector> #define zeros(a) memset(a,0,sizeof(a)) #define ones(a) memset(a,-1,sizeof(a)) #define sc(a) scanf("%d",&a) #define sc2(a,b) scanf("%d%d",&a,&b) #define pt(a) printf("%d\n",a) #define rep0(i,n) for(int i=0;i<n;i++) #define rep1(i,n) for(int i=1;i<=n;i++) #define lson (step<<1) #define rson (lson+1) #define esp 1e-6 #define oo 0x3fffffff #define TEST cout<<"*************************"<<endl using namespace std; typedef long long ll; int n; int mod; int bit[20]; const int maxn=40000; int head[maxn],euler[maxn],vis[maxn]; int T,tot; struct side { int v,next; }e[maxn]; void init() { tot=T=0; zeros(vis); ones(head); } void build(int u,int v) { //printf("%d %d\n",u,v); e[T].v=v; e[T].next=head[u]; head[u]=T++; } void dfs_side(int u) { vis[u]=1; int v=(u<<1)%mod; build(u,v); if(!vis[v]) dfs_side(v); v=v+1; build(u,v); if(!vis[v]) dfs_side(v); } void dfs(int u) { //pt(u); euler[++tot]=u; for(int i=head[u];~i;i=e[i].next) { int v=e[i].v; if(!vis[i]) { vis[i]=1; dfs(v); } } } void getbit() { int p=1; rep1(i,20) { bit[i]=p; p<<=1; } } int main() { //freopen("in.txt","r",stdin); getbit(); while(~scanf("%d",&n)) { init(); if(n==1) { printf("\n"); continue; } mod=(1<<(n-1)); dfs_side(0); zeros(vis); dfs(0); /**<rep1(i,tot) printf("%d ",euler[i]); putchar(‘\n‘);*/ for(int j=n-1;j>=1;j--) { if(euler[1]&bit[j]) printf("1"); else printf("0"); } for(int i=2;i<=tot-(n-1);i++) { if(euler[i]&1) printf("1"); else printf("0"); } putchar(‘\n‘); } return 0; }
标签:
原文地址:http://www.cnblogs.com/youmi/p/4609030.html