HDU 5883 欧拉回路
题面:
思路:
这里面有坑啊啊啊…..
先普及一下姿势:
判断无向图欧拉路的方法:
图连通,只有两个顶点是奇数度,其余都是偶数度的。判断无向图欧拉回路的方法:
图连通,所有顶点都是偶数度。
重点:图连通!!
思路:
先看看图是否联通(就是所有边都能经过么)
再判判是不是欧拉路
经过的次数=(du[i]+1)/2
如果是欧拉回路:枚举起点 再异或一下
不是:输出当前解
就酱~
//By SiriusRen
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
#define N 1000050
int n,t,m,xx[N],yy[N],h[N],ans,du[N],flg;
int first[N],nxt[N],v[N],tot;
bool vis[N],V[N];
void add(int x,int y){v[tot]=y,nxt[tot]=first[x],first[x]=tot++;}
void dfs(int x){
for(int i=first[x];~i;i=nxt[i])if(!V[i])
vis[v[i]]=1,V[i]=V[i^1]=1,dfs(v[i]);
}
int main(){
scanf("%d",&t);
while(t--){
memset(first,-1,sizeof(first)),memset(vis,0,sizeof(vis));
memset(V,0,sizeof(V));
memset(du,0,sizeof(du)),flg=ans=tot=0;
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++)
scanf("%d",&h[i]);
for(int i=1;i<=m;i++){
scanf("%d%d",&xx[i],&yy[i]);
du[xx[i]]++,du[yy[i]]++;
add(xx[i],yy[i]),add(yy[i],xx[i]);
}
dfs(xx[1]),vis[xx[1]]=1;
for(int i=0;i<tot;i++)if(!V[i])goto ed;
for(int i=1;i<=n;i++){
if(!vis[i])continue;
if(du[i]&1)flg++;
du[i]=(du[i]+1)/2;
if(du[i]&1)ans=ans^h[i];
}
if(flg==2)printf("%d\n",ans);
else if(!flg){
int answer=0;
for(int i=1;i<=n;i++)if(vis[i])
answer=max(answer,ans^h[i]);
printf("%d\n",answer);
}
else ed:puts("Impossible");
}
}
HDU 5883 欧拉回路的更多相关文章
- The Best Path HDU - 5883(欧拉回路 && 欧拉路径)
The Best Path Time Limit: 9000/3000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Tot ...
- HDU 5883 F - The Best Path 欧拉通路 & 欧拉回路
给定一个图,要求选一个点作为起点,然后经过每条边一次,然后把访问过的点异或起来(访问一次就异或一次),然后求最大值. 首先为什么会有最大值这样的分类?就是因为你开始点选择不同,欧拉回路的结果不同,因为 ...
- HDU 5883 The Best Path (欧拉路或者欧拉回路)
题意: n 个点 m 条无向边的图,找一个欧拉通路/回路使得这个路径所有结点的异或值最大. 析:由欧拉路性质,奇度点数量为0或2.一个节点被进一次出一次,度减2,产生一次贡献,因此节点 i 的贡献为 ...
- hdu 1116 欧拉回路+并查集
http://acm.hdu.edu.cn/showproblem.php?pid=1116 给你一些英文单词,判断所有单词能不能连成一串,类似成语接龙的意思.但是如果有多个重复的单词时,也必须满足这 ...
- HDU 1878 欧拉回路(判断欧拉回路)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1878 题目大意:欧拉回路是指不令笔离开纸面,可画过图中每条边仅一次,且可以回到起点的一条回路.现给定一 ...
- HDU 3018 欧拉回路
HDU - 3018 Ant Country consist of N towns.There are M roads connecting the towns. Ant Tony,together ...
- HDU 1878 欧拉回路
并查集水题. 一个图存在欧拉回路的判断条件: 无向图存在欧拉回路的充要条件 一个无向图存在欧拉回路,当且仅当该图所有顶点度数都是偶数且该图是连通图. 有向图存在欧拉回路的充要条件 一个有向图存在欧拉回 ...
- HDU 1878 欧拉回路 图论
解题报告:题目大意,给出一个无向图,判断图中是否存在欧拉回路. 判断一个无向图中是否有欧拉回路有一个充要条件,就是这个图中不存在奇度定点,然后还要判断的就是连通分支数是否为1,即这个图是不是连通的,这 ...
- 【刷题】HDU 5883 The Best Path
Problem Description Alice is planning her travel route in a beautiful valley. In this valley, there ...
随机推荐
- Swagger 生成 PHP API 接口文档
Swagger 生成 PHP API 接口文档 Lumen微服务生成Swagger文档 1.概况 有同学反馈写几十个接口文档需要两天的工作量, 随着多部门之间的协作越来越频繁, 维护成本越来越高, 文 ...
- Visual Studio 2013 无法创建MVC项目,系统找不到指定的文件.(Exception from HRESULT:08x0070002)
在Visual Studio 2013中创建新MVC项目,(PS:现在创建个MVC项目,差点都找不到在哪,汗!-) 确定后提示,系统找不到指定的文件.(Exception from HRESULT:0 ...
- 题解 P3128 【[USACO15DEC]最大流Max Flow】
此类型题目有两种比较常见的做法:树链剖分和树上差分. 本题有多组修改一组询问,因此树上差分会比树链剖分优秀很多. 这里两种方法都进行介绍. 树链剖分和树上差分的本质都是将一颗树转换为一个区间,然后进行 ...
- MD5 加密原理(转)
MD5的全称是Message-Digest Algorithm 5(信息-摘要算法),在90年代初由MIT Laboratory for Computer Science和RSA Data Secur ...
- DataTable 数据导入MS ACCESS 数据库中 数字类型字段为空的解决办法
string strSql = "insert into GongCheng (GCSY,GCBH,GCBHOLD,GCMC,GCKCJD,GCJSDW,GCSJDW,GCKCDW,GCSG ...
- Qt之QSpacerItem
简述 QSpacerItem类为布局提供了一个空白区. 简述 比对 使用 效果 源码 效果 源码 比对 通常情况下,不需要直接使用这个类,Qt内建布局管理器在操控空白区时提供以下功能: 类 函数 QH ...
- Cocos2dx学习报告2
记录二:创建项目,其名曰DFJ(仿照微信打飞机) 上一个记录我们说到开发环境的配置以及如何去建立自己的项目. 如今我们就通过之前说所的方法来建立一个项目.这里我就不再截图了. 建立了自己的项目之后,我 ...
- LA_3135优先队列
#include <iostream> #include <cstdio> #include <cstring> #include <queue> us ...
- EL中的param和params
转自:https://blog.csdn.net/javamoo/article/details/55667449 ${param.name}等价于request.getParameter(" ...
- Windows 相关
Open the Windows Update troubleshooter If your computer is having problems finding and installing op ...