题目大意:

给定n m 为图的点数和边数

接下来m行 u v 为u到v有一条边

要求最少几笔能画完图的所有边

输出每笔画过的路径编号 正数编号正向 负数编号反向

题解:https://www.cnblogs.com/xiuwenli/p/9372062.html

#include <bits/stdc++.h>
#define INF 0x3f3f3f3f
#define LL long long
#define mem(i,j) memset(i,j,sizeof(i))
using namespace std;
const int N=1e5+;
int n, m;
struct EDGE {
int to,nt; int id; bool f;
}E[N<<];
int head[N], tot;
void addE(int u,int v,int id) {
E[tot].f=; E[tot].to=v;
E[tot].id=id; E[tot].nt=head[u];
head[u]=tot++;
}
bool vis[N];
int deg[N], cnt;
vector <int> ans[N];
void init() {
tot=cnt=; mem(head,-);
mem(deg,); mem(vis,);
} void dfs(int u) {
vis[u]=;
for(int i=head[u];~i;i=E[i].nt) {
int v=E[i].to, id=E[i].id;
if(!E[i].f) {
E[i].f=E[i^].f=; // 这条边和对应的反向边标记
dfs(v); // 一直搜到终点
if(id) ans[cnt].push_back(-id); // 从终点开始反向记录路径 所以是-id
else cnt++; // id为0说明遇到了手动加的边 就是新的一笔
}
}
} int main()
{
while(~scanf("%d%d",&n,&m)) {
init();
for(int i=;i<=m;i++) {
int u,v; scanf("%d%d",&u,&v);
deg[u]++, deg[v]++;
addE(u,v,i); addE(v,u,-i);
} int u=;
for(int i=;i<=n;i++)
if(deg[i]&) { // 奇数度的点 两两连边
if(u) addE(u,i,), addE(i,u,), u=;
else u=i;
} for(int i=;i<=n;i++)
if(!vis[i] && (deg[i]&)) { /// 先从奇数点开始搜
cnt++; dfs(i); cnt--; // cnt记录的是之前的最后一条路
}
// 所以记录新的路应该cnt++先移到下一条路
// 搜索过程中一直cnt++所以搜索结束后cnt是在下一条路
// 此时将cnt置为最后一条路 应该cnt--
for(int i=;i<=n;i++)
if(!vis[i] && deg[i]) {
cnt++; dfs(i);
} // 此时还未走过的点都是偶数点 形成一个环 所以不需要cnt-- printf("%d\n",cnt);
for(int i=;i<=cnt;i++) {
int len=ans[i].size();
printf("%d",len);
for(int j=;j<len;j++)
printf(" %d",ans[i][j]);
printf("\n"); ans[i].clear();
}
} return ;
}

hdu6311 /// 欧拉路径 无向图最小路径覆盖 输出正反路径的更多相关文章

  1. 【wikioi】1904 最小路径覆盖问题(最大流+坑人的题+最小路径覆盖)

    http://wikioi.com/problem/1904/ 这题没看数据的话是一个大坑(我已报告官方修复了),答案只要求数量,不用打印路径...orz 最小路径覆盖=n-最大匹配,这个我在说二分图 ...

  2. Codevs 1904 最小路径覆盖问题

    1904 最小路径覆盖问题 时间限制: 2 s 空间限制: 256000 KB 题目等级 : 大师 Master 传送门 题目描述 Description 给定有向图G=(V,E).设P 是G 的一个 ...

  3. 【PowerOJ1738】最小路径覆盖

    Description 给定有向图G=(V,E).设P 是G 的一个简单路(顶点不相交)的集合.如果V 中每个 顶点恰好在P 的一条路上,则称P是G 的一个路径覆盖.P 中路径可以从V 的任何一个顶 ...

  4. COGS728. [网络流24题] 最小路径覆盖问题

    算法实现题8-3 最小路径覆盖问题(习题8-13) ´问题描述: 给定有向图G=(V,E).设P是G的一个简单路(顶点不相交)的集合.如果V中每个顶点恰好在P的一条路上,则称P是G的一个路径覆盖.P中 ...

  5. Cogs 728. [网络流24题] 最小路径覆盖问题

    [网络流24题] 最小路径覆盖问题 ★★☆ 输入文件:path3.in 输出文件:path3.out 评测插件 时间限制:1 s 内存限制:128 MB 算法实现题8-3 最小路径覆盖问题(习题8-1 ...

  6. cogs 728. [网络流24题] 最小路径覆盖问题 匈牙利算法

    728. [网络流24题] 最小路径覆盖问题 ★★★☆   输入文件:path3.in   输出文件:path3.out   评测插件时间限制:1 s   内存限制:128 MB 算法实现题8-3 最 ...

  7. 有向无环图(DAG)的最小路径覆盖(转)

    DAG的最小路径覆盖 定义:在一个有向图中,找出最少的路径,使得这些路径经过了所有的点. 最小路径覆盖分为最小不相交路径覆盖和最小可相交路径覆盖. 最小不相交路径覆盖:每一条路径经过的顶点各不相同.如 ...

  8. (step6.3.4)hdu 1151(Air Raid——最小路径覆盖)

    题意:     一个镇里所有的路都是单向路且不会组成回路. 派一些伞兵去那个镇里,要到达所有的路口,有一些或者没有伞兵可以不去那些路口,只要其他人能完成这个任务.每个在一个路口着陆了的伞兵可以沿着街去 ...

  9. 有向无环图(DAG)的最小路径覆盖

    DAG的最小路径覆盖 定义:在一个有向图中,找出最少的路径,使得这些路径经过了所有的点. 最小路径覆盖分为最小不相交路径覆盖和最小可相交路径覆盖. 最小不相交路径覆盖:每一条路径经过的顶点各不相同.如 ...

随机推荐

  1. linux命令du

    du log2012.log 查看文件大小 du -sh *   当前目录所有文件的大小 du|sort -nr|more 按照空间大小排序 du -c log30.tar.gz log31.tar. ...

  2. TOPO DN 解析

    介绍     有一个算法,是将大量TOPO DN实例解析成结构形式.并依据DN获取对应的数据.本人感觉值得分享.并供大家讨论与优化.     注意:TOPO DN实例的顺序,是被我的其他算法预处理过的 ...

  3. window 下搭建流媒体服务器ffmpeg nginx-rmtp-module

    媒体介绍和需要下载需要软件 1.FFmpeg是一套可以用来记录.转换数字音频.视频,并能将其转化为流的开源计算机程序.在这里我只用到了它的视屏格式转换功能,将rtsp协议的视频流转成rtmp 2.ng ...

  4. Android 6.0 - 动态权限管理的解决方案(转)

    转自:http://www.cnblogs.com/dubo-/p/6018262.html Android 6.0 - 动态权限管理的解决方案   转载请标注 Android 6.0版本(Api 2 ...

  5. property和attribute的区别---value

    从网上看到很多写关于input的value属性,写的setAttribute可以影响DOM的property的value,在实践中我发现不同现象, 在页面初始化后,用setAttribute对valu ...

  6. vue撸的demo

    之前做过一个layui+flask的测试平台,后来听说vue挺火,学了下,做个记录 一.想法 主要想开发几大功能,方便以后复用 1.工作中常常需要记录知识,所以我决定会做一个类似markdown笔记的 ...

  7. 非关系型数据库MongoDB入门

    本文分为以下四块简单介绍非关系型数据库MongoDB:1.MongoDB简介.2.MongoDB和关系数据库对比.3.MongoDB基本概念.4.mongo shell的使用以及对MongoDB的增删 ...

  8. poj 2752 kmp的next数组

    题目大意: 求一个字符串中某一个既是前缀又是后缀的前缀的结尾下标: 基本思路: 从_next[len]开始找_next[_next[len]],再找_next[_next[_next[len]]],一 ...

  9. hive之基本架构

    什么是Hive hive是建立在Hadoop体系架构上的一层SQL抽象,使得数据相关人员是用他们最为熟悉的SQL语言就可以进行海量的数据的处理.分析和统计工作,而不是必须掌握JAVA等变成语言和具备开 ...

  10. three.js低版本添加文字(如71版本)

    研究了半天,最后终于加载成功了,记录一下three.js 71版本的文字加载,下面开始整个过程 首先,将ttf字体转换成js文件 源码版: https://github.com/gero3/facet ...