hdu5883 The Best Path(欧拉路)
2024-08-28 10:42:54
比赛第一遍做的时候没有考虑回路要枚举起点的情况导致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 ;
}
最新文章
- shell中export理解误区
- 【Go入门教程5】面向对象(method、指针作为receiver、method继承、method重写)
- Java导出Word利用freemarker(含图片)
- css例子
- Linux 容器技术史话:从 chroot 到未来
- 原创:Eclipse 上网代理设置(亲测有效)
- poj1416 Shredding Company
- Leetcode Unique Paths
- Dynamic CRM 2013学习笔记(一)插件输入实体参数解析
- 字体文件放入CDN服务器中,跨域问题(IIS版)
- 烂泥:为KVM虚拟机添加网卡
- 《ASP.NET1200例》未能找到元数据文件解决办法
- 织梦按栏目id读取banner图
- android 使某个控件获取焦点
- HDU 2296 Ring (AC自动机+DP)
- [置顶] MySQL Cluster初步学习资料整理--安装部署新特性性能测试等
- linux网卡配置
- 最简单的代码,CURL获取页面
- 图解Windows 10下Visual Studio Code的下载和安装
- python中的find、rfind、index、rindex