关于为什么不选桥

因为选桥之后会变成两个联通分支,这时由于可能产生的新联通分支不是孤立顶点,他俩都不联通了,那么也就绝对不可能“一笔画”走下来了

关于为什么可以选除桥之外的任意一条边走

本质原因是因为环与环嵌套后这俩环是没有内外之分的,所以说你任意选一条边本质是选择在哪个环上走,而你走任何一个环最后都是回到出发点,所以就随便走

其实欧拉图就是环套环或者环套环套环或者环套环套环套环或者...的图

例题:洛谷P1341 无序字母对

#include<bits/stdc++.h>
using namespace std;
int mtx[][];
int deg[];
bool vis[];
bool dfs(int u,int v){
vis[u]=;
if(u==v)
return ;
for(int i=;i<;i++){
if(mtx[u][i]&&!vis[i]){
if(dfs(i,v))
return ;
}
}
return ;
}
bool not_bridge(int u,int v){ //判桥用dfs判的
memset(vis,,sizeof(vis));
mtx[u][v]=mtx[v][u]=;
int x=;
for(int i=;i<;i++){
if(mtx[u][i])
x++;
}
if(!x)
return ;
for(int i=;i<;i++){
if(mtx[u][i]){
if(dfs(i,v)){
mtx[u][v]=mtx[v][u]=;
return ;
}
}
}
mtx[u][v]=mtx[v][u]=;
return ;
}
int fa[];
int getfa(int x){ //并查集判一下是不是只有一个连通分量
while(x!=fa[x])
x=fa[x];
return x;
}
void joint(int u,int v){
fa[getfa(v)]=getfa(u);
}
int main(){
int n;
cin>>n;
char t[];
int minch='z'+-'A';
for(int i=;i<=;i++)
fa[i]=i;
for(int i=;i<=n;i++){
cin>>t;
int u=t[]-'A';
minch=min(minch,u);
int v=t[]-'A';
minch=min(minch,v);
if(getfa(u)!=getfa(v))
joint(u,v);
mtx[u][v]=;
deg[u]++;
mtx[v][u]=;
deg[v]++;
}
int prefa=-;
for(int i=;i<=;i++){
if(deg[i]){
if(prefa==-)
prefa=getfa(i);
else{
if(prefa!=getfa(i)){
puts("No Solution");
return ;
}
}
}
}
int odd=;
for(int i=;i<;i++){
if(deg[i]%){
odd++;
}
if(odd>){
puts("No Solution");
return ;
}
}
if(odd==){
minch='z'+-'A';
for(int i=;i<;i++){
if(deg[i]%){
minch=min(minch,i);
}
}
}
queue<int> Q;
Q.push(minch);
while(!Q.empty()){
int temp=Q.front();
Q.pop();
cout<<(char)(temp+'A');
for(int i=;i<;i++){
if(mtx[temp][i]&&not_bridge(temp,i)){
mtx[temp][i]=mtx[i][temp]=;
Q.push(i);
break;
}
}
}
return ;
}
//后来我学了hierholzer,强烈建议大家去学这个算法啊,实用多了

Fleury算法的更多相关文章

  1. 【欧拉回路】【Fleury算法】CDOJ1642 老当益壮, 宁移白首之心?

    题意: 构造一个01串,使得满足以下条件: 1. 环状(即首尾相连) 2. 每一位取值为0或1 3. 长度是2^n 4. 对于每个(2^n个)位置,从其开始沿逆时针方向的连续的n位01串(包括自己) ...

  2. 【欧拉回路】【欧拉路径】【Fleury算法】CDOJ1634 记得小苹初见,两重心字罗衣

    Fleury算法看这里 http://hihocoder.com/problemset/problem/1181 把每个点看成边,每个横纵坐标看成一个点,得到一个无向图. 如果新图中每个点的度都是偶数 ...

  3. Fleury算法 求欧拉回路

    Fleury算法 #include <iostream> #include <cstdio> #include <cstring> #include <cma ...

  4. hiho欧拉路·二 --------- Fleury算法求欧拉路径

    hiho欧拉路·二 分析: 小Ho:这种简单的谜题就交给我吧! 小Hi:真的没问题么? <10分钟过去> 小Ho:啊啊啊啊啊!搞不定啊!!!骨牌数量一多就乱了. 小Hi:哎,我就知道你会遇 ...

  5. CCF 第六次计算机职业认证 第四题 收货 stl动态存储和fleury算法的综合应用

    问题描述 为了增加公司收入,F公司新开设了物流业务.由于F公司在业界的良好口碑,物流业务一开通即受到了消费者的欢迎,物流业务马上遍及了城市的每条街道.然而,F公司现在只安排了小明一个人负责所有街道的服 ...

  6. Fleury算法求欧拉路径

    分析: 小Ho:这种简单的谜题就交给我吧! 小Hi:真的没问题么? <10分钟过去> 小Ho:啊啊啊啊啊!搞不定啊!!!骨牌数量一多就乱了. 小Hi:哎,我就知道你会遇到问题. 小Ho:小 ...

  7. 简单的Fleury算法模板

    假设数据输入时采用如下的格式进行输入:首先输入顶点个数n和边数m,然后输入每条边,每条边的数据占一行,格式为:u,v,表示从顶点u到顶点v的一条有向边 这里把欧拉回路的路径输出了出来: 手写栈: #i ...

  8. HihoCoder1182 欧拉路(Fleury算法)

    描述 小Hi和小Ho破解了一道又一道难题,终于来到了最后一关.只要打开眼前的宝箱就可以通关这个游戏了. 宝箱被一种奇怪的机关锁住: 这个机关是一个圆环,一共有2^N个区域,每个区域都可以改变颜色,在黑 ...

  9. HihoCoder1181欧拉路(Fleury算法求欧拉路径)

    描述 在上一回中小Hi和小Ho控制着主角收集了分散在各个木桥上的道具,这些道具其实是一块一块骨牌. 主角继续往前走,面前出现了一座石桥,石桥的尽头有一道火焰墙,似乎无法通过. 小Hi注意到在桥头有一张 ...

随机推荐

  1. GlobalMemoryStatusEx获取内存

    typedef struct _MEMORYSTATUSEX { DWORD dwLength; DWORD dwMemoryLoad; DWORDLONG ullTotalPhys; DWORDLO ...

  2. Mybatis 实用篇(四)返回值类型

    Mybatis 实用篇(四)返回值类型 一.返回 List.Map List<User> getUsers(); <select id="getUsers" re ...

  3. Greeplum 系列(七) 权限管理

    Greeplum 系列(七) 权限管理 一.角色管理 Role 分为用户(User)和组(Group),用户有 login 权限,组用来管理用户,一般不会有 login 权限.初始化 gp 时创建了一 ...

  4. 前端福利之HTML5 UTF-8 中文乱码(转)

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  5. 用word2016 写CSDN 博客

    目前大部分的博客作者在用Word写博客这件事情上都会遇到以下3个痛点: 1.所有博客平台关闭了文档发布接口,用户无法使用Word,Windows Live Writer等工具来发布博客.使用Word写 ...

  6. Long-distance navigation and magnetoreception in migratory animals(迁徙动物中的长距离导航和磁感应)

    摘要:For centuries, humans have been fascinated by how migratory animals find their way over thousands ...

  7. HTTP请求头和响应头总结

    1)请求(客户端->服务端[request])     GET(请求的方式) /books/java.html(请求的目标资源) HTTP/1.1(请求采用的协议和版本号)     Accept ...

  8. (广搜) Find a way -- hdu -- 2612

    链接: http://acm.hdu.edu.cn/showproblem.php?pid=2612 Find a way Time Limit: 3000/1000 MS (Java/Others) ...

  9. ZSTU4274 约素 2017-03-22 17:11 66人阅读 评论(0) 收藏

    4274: 约素 Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 1807  Solved: 467 Description 判断一个正整数n的约数个数 ...

  10. koa学习笔记

    卸载node http://www.it165.net/os/html/201504/12427.html 安装 sudo npm install -g n sudo n stable 装个稳定版试试 ...