The Best Path HDU - 5883 欧拉通路
图(无向图或有向图)中恰好通过所有边一次且经过所有顶点的的通路成为欧拉通路,图中恰好通过所有边一次且经过所有顶点的回路称为欧拉回路,具有欧拉回路的图称为欧拉图,具有欧拉通路而无欧拉回路的图称为半欧拉图。
规定平凡图(只有一个点)是欧拉图。
性质与定理:
- 无向图G是欧拉图当且仅当G是连通的且没有奇度顶点。
- 无向图G是半欧拉图当且仅当G是连通的且恰有两个奇度顶点。
- 有向图D是欧拉图当且仅当D是强连通的且每个顶点恰有两个奇度顶点。
- 有向图D是半欧拉图当且仅当D是单连通的且每个顶点入度等于出度。
显然,该题为求一条欧拉回路或欧拉通路,并求权值异或最大值,我们知道偶数次异或运算结果为0,通过点的度数,我们不难判断出该点参与异或运算的次数,度数为n的点在欧拉回路起始位置被运算的次数为(n + 1)/ 2 + 1,其他情况运算次数为(n + 1) / 2
题目:题目链接
AC代码:
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring> using namespace std; const int maxn = + ; int n, m, ans;
int w[maxn], num[maxn]; bool solve(); int main()
{
//freopen("in.txt", "r", stdin);
ios::sync_with_stdio();
cin.tie(); int T, u, v;
cin >> T;
while(T--) {
cin >> n >> m;
for(int i = ; i <= n; ++i) {
cin >> w[i];
num[i] = ;
}
for(int i = ; i < m; ++i) {
cin >> u >> v;
++num[u];
++num[v];
}
if(solve())
cout << ans << endl;
else
cout << "Impossible" << endl;
}
return ;
} bool solve() {
int sum = ;
for(int i = ; i <= n; ++i)
if(num[i] & )
++sum;
if(sum != && sum != )
return false;
int temp = ;
for(int i = ; i <= n; ++i)
if((num[i] + ) >> & )
temp ^= w[i];
if(sum == )
ans = temp;
else {
ans = ;
for(int i = ; i <= n; ++i)
ans = max(ans, temp ^ w[i]);
}
return true;
}
The Best Path HDU - 5883 欧拉通路的更多相关文章
- Play on Words HDU - 1116 (并查集 + 欧拉通路)
Play on Words HDU - 1116 Some of the secret doors contain a very interesting word puzzle. The team o ...
- hdu 1116 Play on Words(欧拉通路)
Problem Description Some of the secret doors contain a very interesting word puzzle. The team of arc ...
- PAT (Advanced Level) 1124~1127:1124模拟 1125优先队列 1126欧拉通路 1127中序后序求Z字形层序遍历
1124 Raffle for Weibo Followers(20 分) 题意:微博抽奖,有M个人,标号为1~M.从第S个人开始,每N个人可以获奖,但是已获奖的人不能重复获奖,需要跳过该人把机会留给 ...
- FZU 2112 并查集、欧拉通路
原题:http://acm.fzu.edu.cn/problem.php?pid=2112 首先是,票上没有提到的点是不需要去的. 然后我们先考虑这个图有几个连通分量,我们可以用一个并查集来维护,假设 ...
- POJ 2337 Catenyms(有向图的欧拉通路)
题意:给n个字符串(3<=n<=1000),当字符串str[i]的尾字符与str[j]的首字符一样时,可用dot连接.判断用所有字符串一次且仅一次,连接成一串.若可以,输出答案的最小字典序 ...
- POJ 1780 Code(有向图的欧拉通路)
输入n(1<=n<=6),输出长度为10^n + n -1 的字符串答案. 其中,字符串以每n个为一组,使得所有组都互不相同,且输出的字符串要求字典序最小. 显然a[01...(n-1)] ...
- HDU1116 Play on Words(有向图欧拉通路)
我把单词当作点,然后这样其实是不对的,这样就要判定是否是哈密顿通路.. 这题应该把单词的首尾单词当作点,而单词本身就是边,那样就是判定欧拉通路了. 有向图包含欧拉通路的充要条件是:首先基图连通,然后是 ...
- 欧拉通路-Play on Words 分类: POJ 图论 2015-08-06 19:13 4人阅读 评论(0) 收藏
Play on Words Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 10620 Accepted: 3602 Descri ...
- POJ 2513 Colored Sticks (离散化+并查集+欧拉通路)
下面两个写得很清楚了,就不在赘述. http://blog.sina.com.cn/s/blog_5cd4cccf0100apd1.htmlhttp://www.cnblogs.com/lyy2890 ...
随机推荐
- dtexec命令执行SSIS包
默认情况下,同时安装了 64 位和 32 位版本的 Integration Services 命令提示实用工具的 64 位计算机将在命令提示符处运行 32 位版本.运行 32 位版本的原因是:在 PA ...
- SpringCloud 分布式配置中心
SpringCloud 分布式配置中心 服务端 创建工程并完善结构 国际惯例,把maven工程创建完善 pom.xml <?xml version="1.0" encodin ...
- hubbledotnet 使用笔记
Hubble vs 字符串 <connectionStrings> <add name="Search" connectionString="serve ...
- 如何构建多模块的SpringBoot项目
通过阅读本文你将了解到:如何将已有SpringBoot项目改成多模块 & 如何新构建多模块SpringBoot项目 以下示例基于我正在使用的order(订单服务)进行演示,无论你用的是什么项目 ...
- Dubbo 使用rest协议发布http服务
演示用GitHub地址:https://github.com/suyin58/dubbo-rest-example 1 Dubbo_rest介绍 Dubbo自2.6.0版本后,合并了dub ...
- Android 使用RecyclerView实现多行水平分页的GridView效果和ViewPager效果
前些天看到有人在论坛上问这种效果怎么实现,没写过也没用过这个功能,网上查了一下,大多是使用ViewPager+GridView或者HorizontalScrollView+GridView实现,不过貌 ...
- Git中文件属性的变化,被认为是文件有改动
问题描述: 1. 从公司的git服务器上, 下载最新的代码(zip格式), 解压缩出来, 2. 过一段时间, 去执行git pull代码, 出现如下情况: $ git pull Updating ...
- CSS 利用border三角形绘制方法
CSS 三角形绘制方法,这里面的transparent比较重要,有和没有影响很大: 原理:这个div是由4个三角形组成,每个三角对应一个border,隐藏其它3个border,就可以得到一个三角形. ...
- String | StringBuffer | StringBuilder 比较
2016的第一天,我决定写一篇博客来纪念这一天,希望一年好运吧. String|StringBuffer|StringBuilder这三者在我们学习JAVASE核心API的时候常常出来,而且大多数入门 ...
- SharePoint 2010 缺少站点保存为模板选项
如果您尝试在SharePoint Server 2010中保存网站,并且没有看到"将网站另存为模板"选项,则可能是因为该网站已启用发布功能.如果使用站点发布功能,则有几个选项可将网 ...