poj 1041 John's trip 欧拉回路
2015-12-26 11:59
330 查看
题目链接
求给出的图是否存在欧拉回路并输出路径, 从1这个点开始, 输出时按边的升序输出。
将每个点的边排序一下就可以。
求给出的图是否存在欧拉回路并输出路径, 从1这个点开始, 输出时按边的升序输出。
将每个点的边排序一下就可以。
#include <iostream> #include <vector> #include <cstdio> #include <cstring> #include <algorithm> #include <cmath> #include <map> #include <set> #include <string> #include <queue> using namespace std; #define pb(x) push_back(x) #define ll long long #define mk(x, y) make_pair(x, y) #define lson l, m, rt<<1 #define mem(a) memset(a, 0, sizeof(a)) #define rson m+1, r, rt<<1|1 #define mem1(a) memset(a, -1, sizeof(a)) #define mem2(a) memset(a, 0x3f, sizeof(a)) #define rep(i, n, a) for(int i = a; i<n; i++) #define fi first #define se second typedef pair<int, int> pll; const double PI = acos(-1.0); const double eps = 1e-8; const int mod = 1e9+7; const int inf = 1061109567; const int dir[][2] = { {-1, 0}, {1, 0}, {0, -1}, {0, 1} }; vector <pll> v[2000]; int de[2000], cnt, ans[2000], vis[2000]; void add(int a, int b, int c) { v[a].pb(mk(c, b)); de[a]++; } void dfs(int u) { int len = v[u].size(); for(int i = 0; i<len; i++) { int to = v[u][i].second; int e = v[u][i].fi; if(vis[e]) continue; vis[e] = 1; dfs(to); ans[cnt++] = e; } } int main() { int a, b, c; while(1) { scanf("%d%d", &a, &b); if(a+b==0) break; scanf("%d", &c); for(int i = 1; i<1996; i++) v[i].clear(); mem(de); mem(vis); cnt = 0; add(a, b, c); add(b, a, c); while(1) { scanf("%d%d", &a, &b); if(a+b==0) break; scanf("%d", &c); add(a, b, c); add(b, a, c); } int flag = 0; for(int i = 1; i<=1995; i++) { if(de[i]%2==1) { flag = 1; break; } sort(v[i].begin(), v[i].end()); } if(flag) { puts("Round trip does not exist."); continue; } dfs(1); for(int i = cnt-1; i>0; i--) cout<<ans[i]<<" "; cout<<ans[0]<<endl; } return 0; }
相关文章推荐
- python抓取豆瓣电影
- 指向指针的指针和指针的引用
- 中国铁建内网漫游沦陷多个重要部门泄漏大量信息(redis+ssh-keygen免认证登录案例)
- Spring 4 学习笔记3:依赖注入(DI)
- Shiro
- 排序算法总结
- 文件操作类
- Android互联网访问图片并在客户端显示的方法
- stl中std::binary_function的使用
- 有用的网址(php)
- handle
- CString转string
- Intellij Idea 主题下载(Eclectide Monokai)
- android 4.0 BLE开发官方文档介绍
- FreeMarker整合Spring mvc
- quick-cocos2d-x + Lua 开发
- java基础02
- Nginx/LVS/HAProxy负载均衡软件的优缺点详解
- C# 表复制和数据行的复制说明(Clone、ImportRow 、Copy )
- 指针