欧拉回路 (Euler Circuit) POJ 1780
2015-09-27 23:12
459 查看
http://poj.org/problem?id=1780
相关概念和算法参考:https://www.math.ku.edu/~jmartin/courses/math105-F11/Lectures/chapter5-part2.pdf
相关概念和算法参考:https://www.math.ku.edu/~jmartin/courses/math105-F11/Lectures/chapter5-part2.pdf
#include <cstdio> #include <cstring> using namespace std; #define MAXN 100000 #define MAXM 1000000 struct edge { int id; int to; int next; }; int adjlist[MAXN]; int nnodes; edge edges[MAXM]; int nedges; int stack[MAXM]; int top; int visited[MAXM]; int result[MAXM + 10]; int nres; int n; // input void graph_init() { nnodes = 1; int k = n - 1; while (k--) nnodes *= 10; int size = nnodes * sizeof(int); memset(adjlist, -1, size); nedges = 0; top = -1; memset(visited, 0, size * 10); nres = 0; } void add_edge(int u, int v, int eid) { edges[nedges].id = eid; edges[nedges].to = v; edges[nedges].next = adjlist[u]; adjlist[u] = nedges++; } void graph_dfs() { stack[++top] = 0; printf("%0*d", n-1, 0); visited[0] = 1; while (top >= 0) { int u = stack[top]; for (int i = adjlist[u]; i != -1; i = edges[i].next) { int eid = edges[i].id; int v = edges[i].to; if (visited[eid] == 0) { visited[eid] = 1; stack[++top] = v; goto cont_while; } } top--; result[nres++] = u; cont_while: ; } for (int i = nres - 1; i >= 0; i--) printf("%d", result[i] % 10); printf("\n"); } void solve() { graph_init(); for (int u = 0; u < nnodes; u++) { int w = u % (nnodes / 10); for (int j = 9; j >= 0; j--) { int v = w * 10 + j; add_edge(u, v, u*10+j); } } graph_dfs(); } int main() { while (scanf("%d", &n) != EOF) { if (n == 0) break; if (n == 1) printf("0123456789\n"); else solve(); } return 0; }
相关文章推荐
- 如何汉化EasyUI、ExtJS等富客户端框架
- HDU 5493 Queue (树状数组+二分)2015 ICPC 合肥网赛
- 设置UITableViewCell 选中时的背景颜色
- N-queens
- SOAPUI 安装及破解
- UI:使用 pod 引入 AFNetworking
- SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATEMENT'OpenRowset/OpenDatasource' 的访问
- hdu 5493 Queue 线段树
- UIView
- DownStream CAM350/DFMStream + BluePrint-PCB 2015.9
- HDU 5493 Queue
- HDU - 5493 Queue 2015 ACM/ICPC Asia Regional Hefei Online(线段树)
- UITableView的Group样式的详细使用
- 使用ASIRequest框架 封装一个专门用于数据json串获取的类
- N-Queens II
- UIAlertView 警告框
- N-Queens
- UITableView的详细是使用
- 上下拉刷新之第三方库MJRefresh 的具体使用——(用于UITabView的数据刷新)
- UIWindow的一点儿思考 keyWindow