博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
UOJ117:欧拉回路——题解
阅读量:6224 次
发布时间:2019-06-21

本文共 1648 字,大约阅读时间需要 5 分钟。

(作为一道欧拉回路的板子题,他成功的令我学会了欧拉回路)

(然而我不会背……)

就两件事:

1.无向图为欧拉图,当且仅当为连通图且所有顶点的度为偶数。

2.有向图为欧拉图,当且仅当其基图(将有向边变为无向边的图)连通,且所有顶点的入度等于出度。

这里注意一下:

1.卡时间,所以链前循环的i要写成&i。

2.那么就需要早点将i%2的值存下来。

#include
#include
#include
#include
#include
#include
using namespace std;typedef long long ll;inline int read(){ int x=0,w=1;char ch=0; while(ch<'0'||ch>'9'){ if(ch=='-')w=-1;ch=getchar();} while(ch>='0'&&ch<='9'){x=(x<<1)+(x<<3)+ch-'0';ch=getchar();} return x*w;}const int N=100010;const int M=200010;struct node{ int to; int nxt;}edge[M*2];int cnt=1,head[N];void add(int u,int v){ cnt++; edge[cnt].to=v; edge[cnt].nxt=head[u]; head[u]=cnt; return;}int t;int indeg[N],outdeg[N];bool vis[M];std::vector
ans;void dfs(int u){ for(int &i=head[u];i;i=edge[i].nxt){ int v=edge[i].to; int num; if(t==1)num=i/2; else num=i-1; bool sig=i%2; if(!vis[num]){ vis[num]=1; dfs(v); if(t==1){ if(sig)ans.push_back(-num); else ans.push_back(num); }else{ ans.push_back(num); } } } return;}int main(){ t=read(); int n=read(); int m=read(); for(int i=1;i<=m;i++){ int u=read(); int v=read(); add(u,v); outdeg[u]++;indeg[v]++; if(t==1){ add(v,u); } } if(t==1){ for(int i=1;i<=n;i++){ if((indeg[i]+outdeg[i])%2){ printf("NO\n"); return 0; } } }else{ for(int i=1;i<=n;i++){ if(indeg[i]!=outdeg[i]){ printf("NO\n"); return 0; } } } for(int i=1;i<=n;i++){ if(head[i]){ dfs(i); break; } } if(ans.size()!=m){ printf("NO\n"); return 0; } printf("YES\n"); for(int i=m-1;i>=0;i--){ printf("%d ",ans[i]); } printf("\n"); return 0;}

 

转载于:https://www.cnblogs.com/luyouqi233/p/7856146.html

你可能感兴趣的文章
权限设计之一
查看>>
如何使用网络库实现应用级消息收发
查看>>
Linux中断(interrupt)子系统之二:arch相关的硬件封装层【转】
查看>>
Django - 模板
查看>>
Java刷题知识点之什么是死锁、死锁产生的4个必要条件、死锁的解除与预防
查看>>
ArcGIS Engine对象库
查看>>
图片在保存的时候===》出现这个异常:GDI+ 中发生一般性错误
查看>>
Hadoop MapReduce编程 API入门系列之wordcount版本2(六)
查看>>
分布式监控系统Zabbix-3.0.3-完整安装记录(2)-添加mysql监控
查看>>
运行灵活网页布局的示例程序
查看>>
Android -- Service绑定解绑和aidl
查看>>
它们的定义AlertDialog(二)
查看>>
SQL Server-聚焦计算列或计算列持久化查询性能(二十二)
查看>>
ten sentences(31-40)
查看>>
设计模式(二)工厂方法(创建型)
查看>>
文本比较算法Ⅵ——用线性空间计算最大公共子序列(翻译贴)
查看>>
Winform系列——好用的DataGridview过滤控件(表格的高级搜索功能)
查看>>
KVM 介绍(1):简介及安装
查看>>
Java没有源代码的同步集合~
查看>>
各类总线传输速率【转】
查看>>