给定一个图,要求选一个点作为起点,然后经过每条边一次,然后把访问过的点异或起来(访问一次就异或一次),然后求最大值。

首先为什么会有最大值这样的分类?就是因为你开始点选择不同,欧拉回路的结果不同,因为是回路,所以你的开始点就会被访问多一次,所以如果是欧拉回路的话,还需要O(n)扫一次,枚举每个点作为起点。

欧拉通路的话,结果是固定的,因为只能从奇数度小的那个点作为起点,奇数度大的那个点作为终点。

关于点的访问次数:anstime  = Degree[i] / 2; //如果是奇数的,还要加上一。

因为每两个度就表示:一进一出,度数为2,所以才访问一次。

奇数度的话,剩下的那一个度就是用来出或则进的,

然后如果有一个点的度数是0,则可以说明图不联通,

#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <algorithm>
#define IOS ios::sync_with_stdio(false)
using namespace std;
#define inf (0x3f3f3f3f)
typedef long long int LL; #include <iostream>
#include <sstream>
#include <vector>
#include <set>
#include <map>
#include <queue>
#include <string>
const int maxn = 1e5 + ;
int a[maxn];
int Degree[maxn];
void init(int n) {
for (int i = ; i <= n; ++i) {
Degree[i] = ;
}
}
void work() {
int n, m;
scanf("%d%d", &n, &m);
init(n);
for (int i = ; i <= n; ++i) scanf("%d", &a[i]);
for (int i = ; i <= m; ++i) {
int u, v;
scanf("%d%d", &u, &v);
Degree[u]++;
Degree[v]++;
}
int root = ;
root = ;
for (int i = ; i <= n; ++i) {
root += Degree[i] & ;
if (Degree[i] == ) {
printf("Impossible\n");
return;
}
}
if (!(root == || root == )) {
printf("Impossible\n");
return;
}
int ans = ;
int tans = ;
for (int i = ; i <= n; ++i) {
int tim = Degree[i] / + (Degree[i] & );
tim &= ;
tans ^= a[i] * tim;
}
if (root == ) {
for (int i = ; i <= n; ++i) {
int gg = tans ^ a[i];
ans = max(ans, gg);
}
} else {
ans = tans;
}
printf("%d\n", ans);
} int main() {
#ifdef local
freopen("data.txt","r",stdin);
#endif
// printf("%d\n", 1 ^ 3 ^ 4 ^ 5 ^ 6);
int t;
scanf("%d", &t);
while (t--) work();
return ;
}

最新文章

  1. SIGKDD历年Best Papers
  2. Codeforces Codeforces Round #316 (Div. 2) C. Replacement set
  3. easyui numberbox不可编辑
  4. mysql-python模块编译问题解决
  5. iOS 实现进度条(progress)
  6. 内存管理、ARC
  7. (转载)MatLab绘图
  8. C# - 参数数组Params
  9. 第一百零七节,JavaScript基本包装类型,数据类型的方法
  10. CREELINKS平台_处理器CeAd资源使用说明(CeAd的配置与使用)
  11. 配置Tomcat
  12. 百度地图API 自定义标注图标
  13. 7. Reverse Integer Add to List★
  14. python+selenium,实现带有验证码的自动化登录功能
  15. angular中使用ckplayer播放器
  16. TouchSlide 插件使用介绍
  17. rails 表单中默认值
  18. ZH奶酪:PHP上传图片三个步骤
  19. Jenkins反序列化漏洞cve-2017-1000353
  20. jmeter进行https协议的测试

热门文章

  1. CSS实现简单无缝滚动
  2. 每天一个Linux命令:目录
  3. ubuntu关闭cups服务
  4. ACM学习历程—HDU 2795 Billboard(线段树)
  5. Linux系统上php-cli安装redis扩展
  6. 主备角色switch
  7. Mysql 5.7.18忘记密码
  8. MVC之一、预备知识储备
  9. 虚拟机VMware Workstation cannot connect to the virtual machine
  10. skb_store_bits() 和 skb_copy_bits()