关于为什么不选桥

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

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

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

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

例题:洛谷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. Java Thread系列(二)线程状态

    Java Thread系列(二)线程状态 一.线程的五种状态 新建状态(New):新创建了一个线程对象,尚未启动. 就绪状态(Runnable):也叫可运行状态.线程对象创建后,其他线程调用了该对象的 ...

  2. C语言条件编译及编译预处理阶段(转)

    一.C语言由源代码生成的各阶段如下: C源程序->编译预处理->编译->优化程序->汇编程序->链接程序->可执行文件 其中 编译预处理阶段,读取c源程序,对其中的 ...

  3. AngularJs2.0

    AngularJs2.0中文官网站发布了. 官网地址:https://angular.cn/ 官网点击任何中文地方都可以显示英文原文,中文文档暂时只有 TypeScript的,JavaScript和d ...

  4. 服务器如何打开ping命令

    服务器禁止ping后忘记是用什么方法禁止的了.只知道不是使用ip策略现在需要再开启ping...请问该怎么弄? 是不是windows防火墙开启了啊,到控制面板里的windows防火墙中看看,把防火墙关 ...

  5. Jurassic.ScriptEngine 使用

    标记: Jurassic,js,net Jurassic.ScriptEngine是一个让net动态执行js的一个引擎.类似的有ironjs等.支持ECMAScript 5,非线程安全 使用 usin ...

  6. corss、inner、outer三种join方式

    cross join(没有on)inner join(一般用于交集)outer join(你懂得)后面两个 on 1=1 效果同cross join

  7. WPF定时刷新UI界面

    代码: using NHibernate.Criterion; using System; using System.Collections.Generic; using System.Collect ...

  8. Android Bug BaseExpandableListAdapter, getChildView

    @Override public View getChildView(final int groupPosition, final int childPosition, boolean isLastC ...

  9. pyppeteer初尝滋味

    最近在爬几个电商平台网站用的selenium一登录就会有验证,目前这些网站对selenium检测很严格 因为不少大网站有对selenium的js监测机制.比如navigator.webdriver,n ...

  10. windows挂载网络盘

    @echo offset filename=%DATE:~0,4%%DATE:~5,2%%DATE:~8,2%set filename="DataBak-%filename%"ne ...