题目链接:hdu5883 The Best Path

比赛第一遍做的时候没有考虑回路要枚举起点的情况导致WA了一发orz

节点 i 的贡献为((du[i] / 2) % 2)* a[i]

欧拉回路的起点贡献多一次,欧拉通路起点和终点也多一次。

代码如下:

 #include<cstring>
#include<algorithm>
#include<queue>
#include<vector>
#include<set>
#define CLR(a,b) memset((a),(b),sizeof((a)))
using namespace std; const int N = ;
const int inf = 0x3f3f3f3f;
int n, m;
int a[N];
int du[N]; int main(){
int t, i, j, b, c, f, ans, dd, ma;
scanf("%d", &t);
while(t--){
ans = ;
scanf("%d %d", &n, &m);
f = ;
ma = ;
CLR(du, );
for(i = ; i<= n; ++i)
scanf("%d", &a[i]);
for(i = ; i <= m; ++i){
scanf("%d %d", &b, &c);
du[b]++; du[c]++;
}
dd = ;
for(i = ; i <= n; ++i){
if(du[i]%) dd++;
}
if(dd == || dd==) f = ; // 欧拉路的奇度顶点数为 2 或 0
if(!f){printf("Impossible\n");continue;}
for(i = ; i<= n; ++i){
if(((du[i] + )/) % == )
ans ^= a[i];
}
if(!dd){//欧拉回路时枚举起点
for(i = ; i <= n; ++i){
int t = ans ^a[i];
ma= max(ma, t);
}
ans = ma;
}
printf("%d\n", ans);
}
return ;
}

最新文章

  1. shell中export理解误区
  2. 【Go入门教程5】面向对象(method、指针作为receiver、method继承、method重写)
  3. Java导出Word利用freemarker(含图片)
  4. css例子
  5. Linux 容器技术史话:从 chroot 到未来
  6. 原创:Eclipse 上网代理设置(亲测有效)
  7. poj1416 Shredding Company
  8. Leetcode Unique Paths
  9. Dynamic CRM 2013学习笔记(一)插件输入实体参数解析
  10. 字体文件放入CDN服务器中,跨域问题(IIS版)
  11. 烂泥:为KVM虚拟机添加网卡
  12. 《ASP.NET1200例》未能找到元数据文件解决办法
  13. 织梦按栏目id读取banner图
  14. android 使某个控件获取焦点
  15. HDU 2296 Ring (AC自动机+DP)
  16. [置顶] MySQL Cluster初步学习资料整理--安装部署新特性性能测试等
  17. linux网卡配置
  18. 最简单的代码,CURL获取页面
  19. 图解Windows 10下Visual Studio Code的下载和安装
  20. python中的find、rfind、index、rindex

热门文章

  1. JAVA排序--[选择排序]
  2. FZU 2214 Knapsack problem(背包问题)
  3. Python基础学习笔记(十二)文件I/O
  4. Jquery基本、层次选择器
  5. Scrum Meeting--Twelve(2015-11-3)
  6. openstack 排错
  7. iOS - AVPlayer 音视频播放
  8. iOS - UIKit
  9. 批量创建客户主数据函数SD_CUSTOMER_MAINTAIN_ALL
  10. MonkeyRunner学习(3)脚本编辑