[codechef] TOURISTS
Tourists in Mancunia
找欧拉回路。
$wiki$中说
连通的无向图 有欧拉路径的充要条件是:中奇顶点(连接的边数量为奇数的顶点)的数目等于0或者2。
连通的无向图 是欧拉环(存在欧拉回路)的充要条件是:中每个顶点的度都是偶数。
算法的实现:咱删除每条经过的边就行了。
1 #include<bitset> 2 #include<set> 3 #include<cstdio> 4 #include<vector> 5 #include<iostream> 6 #define pb push_back 7 using namespace std; 8 inline char nc() { 9 return getchar(); 10 static char b[1<<16],*s=b,*t=b; 11 return s==t&&(t=(s=b)+fread(b,1,1<<16,stdin),s==t)?-1:*s++; 12 } 13 inline void read(int &x) { 14 char b = nc(); x = 0; 15 for (; !isdigit(b); b = nc()); 16 for (; isdigit(b); b = nc()) x = x * 10 + b - '0'; 17 } 18 const int N = 100010; 19 int n, m, in[N], ecnt, fa[N]; 20 struct Edge { 21 int u, v; 22 } E[200010]; 23 set < int > g[N]; 24 int find(int x) { 25 return fa[x] == x ? x : fa[x] = find(fa[x]); 26 } 27 void merge(int a, int b) { 28 if ((a = find(a)) != (b = find(b))) fa[b] = a; 29 } 30 void dfs(int u) { 31 while (!g[u].empty()) { 32 int e = *g[u].begin(); 33 if (E[e].u != u) swap(E[e].u, E[e].v); 34 int v = E[e].v; 35 g[u].erase(e); g[v].erase(e); 36 dfs(v); 37 } 38 } 39 int main() { 40 read(n); read(m); 41 for (int i = 1; i <= n; ++i) fa[i] = i; 42 for (int u, v, i = 0; i < m; ++i) { 43 read(u), read(v); 44 E[i] = (Edge){u, v}; 45 g[u].insert(i); 46 g[v].insert(i); 47 ++in[u]; ++in[v]; 48 merge(u, v); 49 } 50 for (int i = 1; i <= n; ++i) 51 if ((in[i] & 1) || find(i) != find(1)) 52 return puts("NO"), 0; 53 dfs(1); puts("YES"); 54 for (int i = 0; i < m; ++i) 55 printf("%d %d\n", E[i].u, E[i].v); 56 return 0; 57 }
转载于:https://www.cnblogs.com/p0ny/p/8196301.html
[codechef] TOURISTS相关推荐
- codechef ANUCBC(背包)
题目链接: https://www.codechef.com/problems/ANUCBC 按模数进行背包 取模不要直接取,分开写,不然会T #include<cstdio> #incl ...
- CodeChef CBAL
题面: https://www.codechef.com/problems/CBAL 题解: 可以发现,我们关心的仅仅是每个字符出现次数的奇偶性,而且字符集大小仅有 26, 所以我们状态压缩,记 a[ ...
- CFCC百套计划2 CodeChef December Challenge 2017 Chef And Easy Xor Queries
https://www.codechef.com/DEC17/problems/CHEFEXQ 题意: 位置i的数改为k 询问区间[1,i]内有多少个前缀的异或和为k 分块 sum[i][j] 表示第 ...
- codechef INSQ15_A(hash+二分)
思路:首先计算字符串s的所有后缀的hash值,然后根据p分离的两个字符串的最长公共子串,使用二分查找.具体代码参考: https://github.com/wuli2496/OJ/blob/maste ...
- CodeChef Cards, bags and coins [DP 泛型背包]
https://www.codechef.com/problems/ANUCBC n个数字,选出其一个子集. 求有多少子集满足其中数字之和是m的倍数.n $\le$ 100000,m $\le$ 10 ...
- Codechef SEAARC Sereja and Arcs (分块、组合计数)
我现在真的什么都不会了呢...... 题目链接: https://www.codechef.com/problems/SEAARC 好吧,这题其实考察的是枚举的功力-- 题目要求的是\(ABAB\)的 ...
- Codechef SEAARC Sereja and Arcs (分块)
我现在真的什么都不会了呢...... 题目链接: https://www.codechef.com/problems/SEAARC 好吧,这题其实考察的是枚举的功力-- 题目要求的是\(ABAB\)的 ...
- Codechef TRIPS Children Trips (分块、倍增)
题目链接: https://www.codechef.com/problems/TRIPS 感觉CC有点毒瘤啊.. 题解: 首先有一个性质可能是因为太傻所以网上没人解释,然而我看了半天: 就是正序和倒 ...
- CodeChef March Lunchtime 2018 div2
地址https://www.codechef.com/LTIME58B?order=desc&sortBy=successful_submissions 简单做了一下,前三题比较水,第四题应该 ...
- [Bzoj4260]Codechef REBXOR(trie树)
4260: Codechef REBXOR Time Limit: 10 Sec Memory Limit: 256 MB Submit: 1534 Solved: 669 [Submit][St ...
最新文章
- C#的网络适配器操作
- linux之文件基本操作学习笔记
- zipparameters 使用_JAVA利用Zip4j解压缩【转】
- 【LeetCode】LeetCode之打家劫舍Ⅱ——暴力递归+动态规划解决循环问题+DP空间优化
- (转)Three challenges you’re going to face when building a chatbot
- 猫猫学iOS之小知识之xcode6自己主动提示图片插件 KSImageNamed的安装
- Caffe学习:Data
- word中插入代码_如何在Word中优雅的插入公式
- 谷梁科技多元化一卡通系统应用
- 笔记本vmware利用无线网卡上网设置
- 安科瑞DTSD/ADL400通讯协议说明-Susie 周
- 中国最小黑客:为不做作业 黑掉学校系统
- TI MSP430工程配置及2019年电赛A题编程示例(使用430 F5529)
- 人人都能写游戏系列(三)Unity 3D平衡球游戏
- 魅族 刷机android 6.0,乐视X800+安卓6.0.1 魅族Flyme6刷机包 最新6.7.12.29R版 紫火20180510更新...
- 抖音橱窗or抖音小店?这3点,新手开店必看!
- mixer: 一个用go实现的mysql proxy
- 使用HTML+CSS制作一个简单的网页
- Kotlin协变和逆变
- 再谈深度学习文本的表示