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 ...
随机推荐
- keepalived + nginx 实现高可用
原理 nginx 可以实现负载均衡,但 nginx 自身存在单点故障的问题,这时候最先想到的就是 keepalived,可以解决单点故障的问题 由于没有使用 lvs,所以这里 nginx 之间不存在负 ...
- 【codeforces 257D】Sum
[题目链接]:http://codeforces.com/problemset/problem/257/D [题意] 给你n个数字; 这n个数字组成的数组满足: a[i-1]<=a[i]< ...
- 一个tomcat下部署多个项目或一个服务器部署多个tomcat
最近需要把两个项目同时部署到服务器上,于是研究了一下,页借鉴了很多别人的方法,把过程记录下来,以儆效尤. 目录: 1,一个tomcat下同时部署两个项目(多个项目可以参考) 1.1项目都放在webap ...
- root用户删除文件提示:Operation not permitted
root用户删除文件提示:Operation not permitted http://blog.csdn.net/evanbai/article/details/6187578
- HDU 1827 Summer Holiday(强连通)
HDU 1827 Summer Holiday 题目链接 题意:中文题 思路:强连通缩点,每一个点的权值为强连通中最小值,然后入度为0的点就是答案 代码: #include <cstdio> ...
- LightOJ - 1038 Race to 1 Again 递推+期望
题目大意:给出一个数,要求你按一定的规则将这个数变成1 规则例如以下,如果该数为D,要求你在[1,D]之间选出D的因子.用D除上这个因子,然后继续按该规则运算.直到该数变成1 问变成1的期望步数是多少 ...
- YII显示sql进行调试
进行插入測试: 一个简单控制器: function actionJia(){ $goods_model = new Goods(); //进行加入有别于查询不能使用以下这样的方式 // $goods_ ...
- 浅谈 trie树 及事实上现
定义:又称字典树,单词查找树或者前缀树,是一种用于高速检索的多叉树结构. 如英文字母的字典树是一个26叉树,数字的字典树是一个10叉树. 核心思想:是空间换时间.利用字符串的公共前缀来减少查询时间的开 ...
- 关于oracle db 11gR2版本号上的_external_scn_rejection_threshold_hours參数和scn headroom补丁问题
关于oracle db 11gR2版本号上的_external_scn_rejection_threshold_hours參数和scn headroom补丁问题 来自于: Installing, Ex ...
- Adobe 2015 CC update (Windows/Mac OS) 独立升级包下载 Adobe Photoshop CC (Windows 32bit)
Adobe CC 2015 Product Updates/Downloads for Windows ** = To access these updates, please first follo ...