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 ...
随机推荐
- Json数据时间格式的处理
方法: using Newtonsoft.Json; using Newtonsoft.Json.Converters;//需引入Newtonsoft.Json.dll public class Co ...
- Adobe Acrobat XI Pro 两种破解方式 Keygen秘钥 license替换 亲测有效
大家平时看paper比较多的话想必都是用Adobe Acrobat而非Adobe Reader吧,其功能全面之处就不啰嗦了,下面给大家分享下Adobe Acrobat XI Pro的两种破解方式(两种 ...
- 转:PHP开发者应了解的24个库
原文来自于:http://blog.jobbole.com/54201/ 作为一个PHP开发者,现在是一个令人激动的时刻.每天有许许多多有用的库分发出来,在Github上很容易发现和使用这些库.下面是 ...
- 【译】UI设计基础(UI Design Basics)--iOS应用解析(iOS App Anatomy)(三)
2.1 iOS应用解析(iOS App Anatomy) 几乎所有的iOS应用都会用到UIKit框架中的组件.了解这些基础组件的名称,角色,功能可以帮你在应用界面设计时做出更好的决策. UIKit提 ...
- Spring: DispacherServlet和ContextLoaderListener中的WebApplicationContext的关系
在Web容器(比如Tomcat)中配置Spring时,你可能已经司空见惯于web.xml文件中的以下配置代码: <context-param> <param-name>cont ...
- UVA 10706 Number Sequence (找规律 + 打表 + 查找)
Problem B Number Sequence Input: standard input Output: standard output Time Limit: 1 second A singl ...
- BZOJ1611: [Usaco2008 Feb]Meteor Shower流星雨
1611: [Usaco2008 Feb]Meteor Shower流星雨 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 904 Solved: 393 ...
- Ubuntu 12.04 下安装 Eclipse
方法一:(缺点是安装时附加openjdk等大量程序并无法去除,优点是安装简单) $ sudo apt-get install eclipse 方法二:(优点是安装内容清爽,缺点是配置麻烦)1.安装JD ...
- 搜索(四分树):BZOJ 4513 [SDOI2016 Round1] 储能表
4513: [Sdoi2016]储能表 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 395 Solved: 213[Submit][Status] ...
- Search for a Range ——LeetCode
Given a sorted array of integers, find the starting and ending position of a given target value. You ...