poj 1780 code(欧拉路)
/*
对于n为密码想要序列最短 那么 1234 2345 这两个一定挨着
就是说 前一个的后n-1位是后一个的前n-1位 假设n==3
我们用0-99作为点的编号建图 然后每个点连出去10条边
两个相邻点有n-1个是重复的 边的权值可用两个点计算
比如 12 23 权值为123 123 234 权值为1234
显然最后的序列是每个边记录一次 也就是跑欧拉路
对于记录下的边权 第一条输出前n-1为 上下的输出最后一位
这就是答案了 poj上没有special judge 要求字典序最小
这里建边时从9-0 就ok了
*/
#include<iostream>
#include<cstdio>
#include<cstring>
#define maxn 1000010
using namespace std;
int n,m,num,head[maxn],s[maxn],len;
int S[maxn],top,f[maxn],T[maxn];
struct node
{
int u,v,t,pre;
}e[maxn*];
void Clear()
{
num=len=top=;
memset(head,-,sizeof(head));
memset(head,-,sizeof(head));
memset(f,,sizeof(f));
}
void Add(int from,int to,int dis)
{
e[num].v=to;
e[num].t=dis;
e[num].pre=head[from];
head[from]=num++;
}
void Dfs(int x)
{
S[++top]=x;T[top]=;
while(top)
{
int u=S[top],falg=,ti=T[top];
for(int i=head[u];i!=-;i=e[i].pre)
{
int v=e[i].v;
if(f[e[i].t])continue;
falg=;f[e[i].t]=;
S[++top]=v;T[top]=e[i].t;
break;
}
if(!falg)s[++len]=ti,top--;
}
}
int main()
{
while(scanf("%d",&n)&&n)
{
Clear();
if(n==){puts("");continue;}
int t=,r=;
for(int i=;i<n;i++)t*=,r*=;r/=;
for(int i=;i<t;i++)
for(int j=;j>=;j--)
Add(i,i%r*+j,i*+j);
Dfs();
for(int i=;i<=n-;i++)printf("");
printf("%d",s[len]/);
for(int i=len-;i>=;i--)printf("%d",s[i]%);
printf("\n");
}
}
poj 1780 code(欧拉路)的更多相关文章
- POJ 2230 (欧拉路)
分析: 基础的欧拉路算法,变化在于要求每条边正向和反向各走一遍. 链式前向星构图,只要标记走过的单向边,边找边输出即可. code #include <iostream> #include ...
- [欧拉回路+手动开栈] poj 1780 Code
题目链接: http://poj.org/problem? id=1780 Code Time Limit: 1000MS Memory Limit: 65536K Total Submissio ...
- POJ 1780 Code(有向图的欧拉通路)
输入n(1<=n<=6),输出长度为10^n + n -1 的字符串答案. 其中,字符串以每n个为一组,使得所有组都互不相同,且输出的字符串要求字典序最小. 显然a[01...(n-1)] ...
- POJ 1780 Code(欧拉回路+非递归dfs)
http://poj.org/problem?id=1780 题意:有个保险箱子是n位数字编码,当正确输入最后一位编码后就会打开(即输入任意多的数字只有最后n位数字有效)……要选择一个好的数字序列,最 ...
- poj 2337(单向欧拉路的判断以及输出)
Catenyms Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 11648 Accepted: 3036 Descrip ...
- poj 1780 Code
//题目描述:KEY公司开发出一种新的保险箱.要打开保险箱,不需要钥匙,但需要输入一个正确的.由n位数字组成的编码.这种保险箱有几种类型,从给小孩子玩的玩具(2位数字编码)到军用型的保险箱(6位数字编 ...
- POJ 1637 Sightseeing tour (混合图欧拉路判定)
Sightseeing tour Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 6986 Accepted: 2901 ...
- poj 1386 Play on Words(有向图欧拉路+并查集)
题目链接:http://poj.org/problem?id=1386 思路分析:该问题要求判断单词是否能连接成一条直线,转换为图论问题:将单词的首字母和尾字母看做一个点,每个单词描述了一条从首字母指 ...
- POJ 2513 - Colored Sticks - [欧拉路][图的连通性][字典树]
题目链接: http://poj.org/problem?id=2513 http://bailian.openjudge.cn/practice/2513?lang=en_US Time Limit ...
随机推荐
- JS动画理论
动画(Animation) 动画意味着随着时间而变化,尤其指视觉上的变化,包括位置.形态等的变化.运动基本上表现为物体随时间,发生位置上的变化:形态基本表现为大小.颜色.透明度.形状等随时间的变化. ...
- Python,遍历目录下TXT
import os #获取根目录,递归得到所以txt文件的路径 list_dirs = os.walk(os.curdir) txtfilenames=[] for root, dirs, files ...
- 最新选择Godaddy主机方案美国数据中心教程指导
随着Godaddy官方管理层的变动之后,主营重心已经从当初的域名开始转向到域名和主机产品上.这点我们从其发布域名优惠信息的频率也可以看到,而且我们可以看到常年的主机半价优惠,以及针对主机销售年付方案赠 ...
- smtp协议
一.smtp命令 1.HELO 向服务器标识用户身份 2.MAIL 初始化邮件传输mail from: <xxx> 3.RCPT 标识单个的邮件接收人:常在MAIL命令后面可有多个rcpt ...
- Unity3d 读取网络xml
Unity3d 读取网络xml Unity3d 读取网络xml,这个xml文件需要不包含BOM信息,可以用UltraEdit打开xml文件,并且另存为的时候,选择不包含BOM的utf-8格式存储!
- JSP页面的异常处理<转>
对于jsp页面错误处理这里大致有两种方式:一.在Web.xml中配置全局的错误异常处理 即凡是该项目下(即虚拟路径下的所有文件)的任意一个文件错误或者异常,都会跳到指定的错误处理页面. ...
- org.springframework.beans.BeanUtils
org.springframework.beans.BeanUtils的一个demo.可以很优雅的实现将父类字段的值copy到子类中 下面例子的输出结果(子类使用父类的toString方法,有点意思吧 ...
- logstash 处理各种时间格式
tomcat access日志: { "@version" => "1", "@timestamp" => "2016 ...
- vijos1082丛林探险
P1082丛林探险 描述 东非大裂谷中有一片神秘的丛林,是全世界探险家的乐园,著名黄皮肤探险家BB一直想去试试.正好我国科学家2005年4月将首次对东非大裂谷进行科考,BB决定随科考队去神秘丛林探险. ...
- ACM编程网站
ACM:ACM国际大学生程序设计竞赛(英文全称:ACM International Collegiate ProgrammingContest(ACM-ICPC或ICPC)是由美国计算机协会(ACM) ...