题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5883

题意:n 个点 条无向边的图,找一个欧拉通路/回路使得这个路径所有结点的异或值最大。

先判断是否含有欧拉路径,如果存在的话有两种情况,有起点和终点不同的欧拉路径,这样我们只需把经过奇数次的点的权值异或起来即可;

还有就是起点和终点相同的欧拉回路;我们在原来的基础上枚举出一个起点,使得结果最大即可;

#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<iostream>
#include<vector>
#include<queue>
#include<set>
using namespace std;
#define met(a, b) memset(a, b, sizeof(a))
#define N 100005
#define INF 0x3f3f3f3f
typedef long long LL; int du[N], n, a[N]; int Judge()
{
int odd = , ans = ;
for(int i=; i<=n; i++)
{
if(du[i]&)
odd++;
} if(odd != && odd != )///度数为奇数的点只有是这两种情况下才存在欧拉路径;
return -; for(int i=; i<=n; i++)
{
du[i] = (du[i]+)/;///经过一个点的次数;
if(du[i]&)///当经过偶数次时异或结果为0,所以只需异或奇数即可;
ans ^= a[i];
}
if(odd == )///当度数都为偶数时,说明存在欧拉回路,我们只需枚举起点,保存最大值即可;
{
for(int i=; i<=n; i++)
ans = max(ans, ans^a[i]);
}
return ans;
} int main()
{
int T, m;
scanf("%d", &T);
while(T--)
{
met(du, ); scanf("%d %d", &n, &m); for(int i=; i<=n; i++)
scanf("%d", &a[i]); for(int i=; i<=m; i++)
{
int u, v;
scanf("%d %d", &u, &v);
du[u] ++; du[v] ++;
} int ans = Judge(); if(ans == -) puts("Impossible");
else printf("%d\n", ans);
}
return ;
}

The Best Path---hdu5883(欧拉路径)的更多相关文章

  1. The Best Path(HDU5883)[欧拉路]2016青岛online

    题库链接:http://acm.hdu.edu.cn/showproblem.php?pid=5883 欧拉回路裸题,第一次接触欧拉路的我是真的长见识了^-^ 懂了欧拉路这道题就是没什么问题了,欧拉路 ...

  2. hdu5883 The Best Path(欧拉路)

    题目链接:hdu5883 The Best Path 比赛第一遍做的时候没有考虑回路要枚举起点的情况导致WA了一发orz 节点 i 的贡献为((du[i] / 2) % 2)* a[i] 欧拉回路的起 ...

  3. The Best Path HDU - 5883(欧拉回路 && 欧拉路径)

    The Best Path Time Limit: 9000/3000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Tot ...

  4. hdu5883 The Best Path 2016-09-21 21:31 92人阅读 评论(0) 收藏

    The Best Path Time Limit: 9000/3000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others) To ...

  5. HDU5883 The Best Path(欧拉回路 | 通路下求XOR的最大值)

    本文链接:http://www.cnblogs.com/Ash-ly/p/5932748.html 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=588 ...

  6. hiho欧拉路·二 --------- Fleury算法求欧拉路径

    hiho欧拉路·二 分析: 小Ho:这种简单的谜题就交给我吧! 小Hi:真的没问题么? <10分钟过去> 小Ho:啊啊啊啊啊!搞不定啊!!!骨牌数量一多就乱了. 小Hi:哎,我就知道你会遇 ...

  7. poj2337 欧拉路径

    poj2337 这道题昨天晚上开始做,今天才A.但是问题想透了, 发现其实没那么难 题目大意: 给你一些单词,如果一个单词的末尾字符与另一个单词首字符相同,则两个的单词可以连接.问是否可以把所有单词连 ...

  8. PAT甲级 1126. Eulerian Path (25)

    1126. Eulerian Path (25) 时间限制 300 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue In grap ...

  9. 【刷题】HDU 5883 The Best Path

    Problem Description Alice is planning her travel route in a beautiful valley. In this valley, there ...

  10. PAT 1126 Eulerian Path[欧拉路][比较]

    1126 Eulerian Path (25 分) In graph theory, an Eulerian path is a path in a graph which visits every ...

随机推荐

  1. BZOJ2690 : 字符串游戏

    离线算法: 先将所有涉及到的串建成字典树,然后用线段树维护dfs序,时间复杂度$O(m\log L)$. 在线算法: 用替罪羊树动态维护Trie树的dfs序即可,时间复杂度$O(L\log L)$. ...

  2. linux eclipse cdt make error 127

    不知道为啥,copy原来的eclipse环境到新的地方后,编译总是出错: make:*** error 127 解决方案是:属性Properties---C++编译 c++build---build ...

  3. Codeforces Round #192 (Div. 2) B. Road Construction

    #include <iostream> #include <vector> using namespace std; int main(){ int n,m; cin > ...

  4. ios ASIHttpLib 同步请求和异步请求

    1.同步请求可以从因特网请求数据,一旦发送同步请求,程序将停止用户交互,直至服务器返回数据完成,才可以进行下一步操作, 2.异步请求不会阻塞主线程,而会建立一个新的线程来操作,用户发出异步请求后,依然 ...

  5. 李洪强-C语言6-控制结构

    C语言流程控制 一.流程控制结构 (1)顺序结构:按书写顺序执行每一条语句. (2)选择结构:对给定的条件进行判断,根据判断结果决定执行哪一段代码. (3)循环结构:在给定条件成立的情况下,反复执行某 ...

  6. FLTK 1.3.3 MinGW 4.9.1 Configuration 配置

    Download FLTK 1.3.3 Download CMake 3.2.0 Start CMake 3.2.0, fill the source and destination: source: ...

  7. Servlet 编程 http请求类型

    HTTP协议的8种请求类型介绍 HTTP协议中共定义了八种方法或者叫“动作”来表明对Request-URI指定的资源的不同操作方式,具体介绍如下: OPTIONS:返回服务器针对特定资源所支持的HTT ...

  8. java如何产生随机数

    一.java如何产生随机数? 1.打开eclipse 2.新建java项目,例如取名为“suijishu”点击完成 3.新建一个类进行测试 4.首先要在头部插入一个包 输入import java.ut ...

  9. python 线程使用

    ################# 线程演示脚本  ####################### #coding=utf-8import threadingfrom time import ctim ...

  10. ESXi云管理平台

    实验室有多台使用ESXi实现虚拟化的服务器,平时管理不便,便通实验室其他同学一起编写了一个基于ESXi的云平台管理系统. 对物理服务器进行管理,实现增加.删除.修改.性能监控. 对虚拟机进行管理,实现 ...