【UOJ#177】欧拉回路

题面

UOJ

题解

首先图不连通就没啥好搞的了。
对于无向图而言,每个点度数为偶数。
对于有向图而言,每个点入度等于出度。
然后就是一本通上有的做法,直接\(dfs\)一遍就好了。。

#include<iostream>
#include<cstdio>
using namespace std;
#define MAX 100100
inline int read()
{int x=0;bool t=false;char ch=getchar();while((ch<'0'||ch>'9')&&ch!='-')ch=getchar();if(ch=='-')t=true,ch=getchar();while(ch<='9'&&ch>='0')x=x*10+ch-48,ch=getchar();return t?-x:x;
}
struct Line{int v,next;}e[MAX<<2];
int h[MAX],cnt=2,dg1[MAX],dg2[MAX];bool vis[MAX<<1];
inline void Add(int u,int v){e[cnt]=(Line){v,h[u]};h[u]=cnt++;dg1[u]++,dg2[v]++;}
int t,m,n,ans[MAX<<1],tot;
void dfs(int u)
{for(int &i=h[u];i;i=e[i].next){if(vis[i>>(t&1)])continue;int j=i;vis[i>>(t&1)]=true;dfs(e[i].v);ans[++tot]=(((t&1)&(j&1))?-1:1)*(j>>(t&1));}
}
int main()
{t=read();n=read();m=read();for(int i=1;i<=m;++i){int u=read(),v=read();Add(u,v);if(t&1)Add(v,u);}for(int i=1;i<=n;++i)if((t==1&&((dg1[i]&1)||(dg2[i]&1)))||(t==2&&dg1[i]!=dg2[i])){puts("NO");return 0;}dfs(e[2].v);if(tot<m){puts("NO");return 0;}puts("YES");for(int i=tot;i;--i)printf("%d ",ans[i]-t+1);puts("");return 0;
}

转载于:https://www.cnblogs.com/cjyyb/p/10459181.html

【UOJ#177】欧拉回路相关推荐

  1. uoj 117 欧拉回路

    1.判断是否为欧拉存在欧拉回路---裸的判断 欧拉回路就是看一笔能不能把途中所有的边跑完没得重复 对于无向边----建立双向边判断每个点的入度是否为2的倍数   1.1 对于有向边---建立单向边判断 ...

  2. UOJ - #117. 欧拉回路(模板)

    题目链接:点击查看 题目大意:给出一个 nnn 个点 mmm 条边的图,可能是有向图或无向图,求一条欧拉回路 题目分析:有个小坑点就是图必须是联通的 代码: // Problem: #117. 欧拉回 ...

  3. UOJ 117 欧拉回路(套圈法+欧拉回路路径输出+骚操作)

    题目链接:http://uoj.ac/problem/117 题目大意: 解题思路:先判断度数: 若G为有向图,欧拉回路的点的出度等于入度. 若G为无向图,欧拉回路的点的度数位偶数. 然后判断连通性, ...

  4. UOJ.117.欧拉回路

    题目链接 这数据..简直了 有自环和重边,有些点可能没有连边(并查集不好使 就DFS吧) 因为重边+自环可能非常多,同一个点可能经过n次,所以必须要重置表头H[x](类似当前弧优化) 另外是找欧拉回路 ...

  5. UOJ #117. 欧拉回路

    #117. 欧拉回路 在图中找一个环使得每条边都在环上出现恰好一次. 要注意的地方好多啊 每条边恰好出现一次!!! 条件:每个点偶度 / 入度=出度 方法就是套圈法啦 然后本题自环是合法的,如果200 ...

  6. uoj #117. 欧拉回路 圈套圈算法求欧拉回路

    题意 给你一个有向图或无向图,要求输出其中一条欧拉回路. n≤100000 n ≤ 100000 n\le100000 分析 圈套圈算法求欧拉回路的模版题. 这个算法大概是,从某个点开始走,然后用一个 ...

  7. uoj #117. 欧拉回路 套圈法

    题面 题意 给出一幅有向或无向图,判断是否存在一个环走遍所有边,若有则输出求其中的环. 做法 首先判断很容易,对于无向图只要联通且度数都是偶数即可,对于有向图,则要联通且入度等于出度,问题在于如何找到 ...

  8. [UOJ#177]新年的腮雷

    Description 你有一个长度为n的序列a,和一个长度为m的序列b 你每次可以选择m个a中的数x1~xm合并(顺序任意),合并会剩下一个数,为min(xi+bi) 你需要让剩下的最后的数最小. ...

  9. 【UOJ#389】【UNR#3】白鸽(欧拉回路,费用流)

    [UOJ#389][UNR#3]白鸽(欧拉回路,费用流) 题面 UOJ 题解 首先第一问就是判断是否存在一条合法的欧拉回路,这个拿度数和连通性判断一下就行了. 第二问判断转的圈数,显然我们只需要考虑顺 ...

  10. 一本通1527欧拉回路

    1527:[例 1]欧拉回路 时间限制: 1000 ms         内存限制: 262144 KB [题目描述] 原题来自:UOJ #117 有一天一位灵魂画师画了一张图,现在要你找出欧拉回路, ...

最新文章

  1. 系统由单体架构到微服务架构到底是如何演进的?
  2. C#中提供的精准测试程序运行时间的类Stopwatch
  3. 部署Exchange Server 2007 SCC
  4. 为何不精通C? 03 深入剖析声明
  5. request获取各种路径总结
  6. VMware 6 个少为人知的技巧
  7. 基于设备树的TQ2440 DMA学习(2)—— 简单的DMA传输
  8. 【操作系统/OS笔记10】进程/线程的调度原则、调度算法、实时调度、多处理器调度、优先级反转
  9. .net socket与完成端口、异步发送相关研究
  10. cas5.3:CAS Server搭建
  11. php如何连接mariadb,MariaDB 建立连接
  12. 20155209 林虹宇 Exp3 免杀原理与实践
  13. 算法导论第三版 第3章习题答案
  14. 三极管开关电路_三极管在开关电路中的详细应用分析
  15. 局域网屏幕共享_【宅家宝典】将手机屏幕搬上电视,只需解锁一个技能!
  16. Linux下文件搜索、查找、查看命令
  17. matlab三元一次方程组的解包含未知数,用matlab解三元一次方程组_matlab解高阶方程_matlab二分法求方程的近似解...
  18. PHP学生学校在线考试管理系统,MYSQL数据库网页设计
  19. 成功=正确的方法+艰苦的努力+少说空话——《学习之道》+《刻意练习》+《练习的心态》
  20. origin登录显示无网络连接到服务器,origin显示“您初次登录时必须保持联网。请检查您的网络连接后再试一次”,怎么处理...

热门文章

  1. 将集合类转换成DataTable
  2. Spring定时器技术终结者——采用Scheduled注释的方式实现Spring定时器
  3. js截取字符长度加省略号
  4. ArrayList源码详解篇
  5. MySQL 删除数据库中所有表、所有存储过程命令
  6. java接口中有效的方法声明_在Java接口中,下列选顶中有效的方法声明是
  7. linux服务器数据备份到本地硬盘_如何备份硬盘数据,最简单的方法是什么?
  8. pdf虚拟打印机下载win7_闪电PDF虚拟打印机使用教程,超级简单的方法
  9. springcloud-gateway路由配置和跨域配置
  10. 电大 计算机网络 网考,2018-2019年最新电大《计算机网络(本)》网络核心课形考网考作业答案.docx...