图论 HDOJ 5348 MZL's endless loop
/*
题意:给一个n个点,m条边的无向图,要求给m条边定方向,使得每个定点的出入度之差的绝对值小于等于1. 输出任意一种结果
图论:一个图,必定存在偶数个奇度顶点。那么从一个奇度定点深搜,当碰到另外一个奇度顶点时结束,这样能保证度数差<=1
3.5 详细解释:http://blog.csdn.net/ZSGG_ACM/article/details/47287681
*/
/************************************************
* Author :Running_Time
* Created Time :2015-8-5 18:55:37
* File Name :F.cpp
************************************************/
#pragma comment (linker, "/STACK:1024000000,1024000000")
#include <cstdio>
#include <algorithm>
#include <iostream>
#include <sstream>
#include <cstring>
#include <cmath>
#include <string>
#include <vector>
#include <queue>
#include <deque>
#include <stack>
#include <list>
#include <map>
#include <set>
#include <bitset>
#include <cstdlib>
#include <ctime>
using namespace std; #define lson l, mid, rt << 1
#define rson mid + 1, r, rt << 1 | 1
typedef long long ll;
const int MAXN = 1e5 + ;
const int INF = 0x3f3f3f3f;
const int MOD = 1e9 + ;
struct Edge {
int v, nex, dir;
}e[MAXN*];
int head[MAXN];
int deg[MAXN];
int n, m, tot; void init(void) {
tot = ;
memset (head, -, sizeof (head));
memset (deg, , sizeof (deg));
} void add_edge(int u, int v) {
e[tot].v = v;
e[tot].nex = head[u];
e[tot].dir = ;
head[u] = tot++;
} bool DFS(int u) {
for (int &i=head[u]; ~i; i=e[i].nex) {
int v = e[i].v;
int dir = e[i].dir ^ e[i^].dir;
if (dir) continue;
e[i].dir = ;
if (deg[v]) {
deg[v] = ; return true;
}
if (DFS (v)) return true;
}
return false;
} void work(void) {
for (int i=; i<=n; ++i) {
if (deg[i]) {
deg[i] = ; DFS (i);
}
}
for (int i=; i<=n; ++i) {
while (~head[i]) DFS (i);
}
for (int i=; i<tot; i+=) {
if (e[i].dir) puts ("");
else puts ("");
}
} int main(void) { //HDOJ 5348 MZL's endless loop
int T; scanf ("%d", &T);
while (T--) {
init ();
scanf ("%d%d", &n, &m);
for (int i=; i<=m; ++i) {
int u, v; scanf ("%d%d", &u, &v);
deg[u] ^= ; deg[v] ^= ;
add_edge (u, v); add_edge (v, u);
}
work ();
} return ;
}
/************************************************
* Author :Running_Time
* Created Time :2015-8-5 18:55:37
* File Name :F.cpp
************************************************/
#pragma comment (linker, "/STACK:1024000000,1024000000")
#include <cstdio>
#include <algorithm>
#include <iostream>
#include <sstream>
#include <cstring>
#include <cmath>
#include <string>
#include <vector>
#include <queue>
#include <deque>
#include <stack>
#include <list>
#include <map>
#include <set>
#include <bitset>
#include <cstdlib>
#include <ctime>
using namespace std; #define lson l, mid, rt << 1
#define rson mid + 1, r, rt << 1 | 1
typedef long long ll;
const int MAXN = 1e5 + ;
const int INF = 0x3f3f3f3f;
const int MOD = 1e9 + ;
struct Edge {
int v, nex, vis;
}e[MAXN*];
int head[MAXN];
int deg[MAXN];
int ans[MAXN*];
int n, m, tot; void init(void) {
tot = ;
memset (head, -, sizeof (head));
memset (deg, , sizeof (deg));
} void add_edge(int u, int v) {
e[tot].v = v;
e[tot].nex = head[u];
e[tot].vis = ;
head[u] = tot++;
} void DFS(int u) {
for (int &i=head[u]; ~i; ) {
int v = e[i].v;
if (e[i].vis) {
i = e[i].nex; continue;
}
e[i].vis = ; e[i^].vis = ;
ans[i>>] = i & ;
deg[u]--; deg[v]--;
i = e[i].nex;
DFS (v);
}
} void patch(void) {
int pre = -;
for (int i=; i<=n; ++i) {
if (deg[i] & ) {
if (pre == -) {
pre = i;
}
else {
add_edge (pre, i); add_edge (i, pre);
deg[pre]++; deg[i]++;
pre = -;
}
}
}
} void work(void) {
patch ();
for (int i=; i<=n; ++i) {
if (deg[i]) DFS (i);
}
for (int i=; i<m; ++i) printf ("%d\n", ans[i]);
} int main(void) {
int T; scanf ("%d", &T);
while (T--) {
init ();
scanf ("%d%d", &n, &m);
for (int i=; i<=m; ++i) {
int u, v; scanf ("%d%d", &u, &v);
deg[u]++; deg[v]++;
add_edge (u, v); add_edge (v, u);
}
work ();
} return ;
}
不太清楚的代码
图论 HDOJ 5348 MZL's endless loop的更多相关文章
- Hdu 5348 MZL's endless loop (dfs)
题目链接: Hdu 5348 MZL's endless loop 题目描述: 给出一个无向图(有环,有重边),包含n个顶点,m条边,问能否给m条边指定方向,使每个顶点都满足abs(出度-入度)< ...
- 2015 Multi-University Training Contest 5 hdu 5348 MZL's endless loop
MZL's endless loop Time Limit: 3000/1500 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Oth ...
- HDU 5348 MZL's endless loop(DFS去奇数度点+欧拉回路)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5348 题目大意:给你一张图,有n个点,和m条无向边,让你把m条无向边变成有向边,使得每个节点的|出度- ...
- HDU 5348 MZL's endless loop 给边定向(欧拉回路,最大流)
题意: 给一个所有你可能想得到的奇葩无向图,要求给每条边定向,使得每个点的入度与出度之差不超过1.输出1表示定向往右,输出0表示定向往左. 思路: 网络流也是可以解决的!!应该挺简单理解的.但是由于复 ...
- HDU 5348 MZL's endless loop
乱搞题...第一直觉是混合图的欧拉通路,但是感觉并没有多大关系.最终AC的做法是不断的寻找欧拉通路,然后给边标号.所有边访问了一遍,所有点访问了一遍,效率是o(n+m).不存在-1的情况. #incl ...
- 2015多校.MZL's endless loop(欧拉回路的机智应用 || 构造)
MZL's endless loop Time Limit: 3000/1500 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Oth ...
- hdu5348 MZL's endless loop(欧拉回路)
转载请注明出处: http://www.cnblogs.com/fraud/ ——by fraud MZL's endless loop Time Limit: 3000/1500 ...
- [2015hdu多校联赛补题]hdu5348 MZL's endless loop
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5348 题意:给你一个无向图,要你将无向图的边变成有向边,使得得到的图,出度和入度差的绝对值小于等于1, ...
- mutiset HDOJ 5349 MZL's simple problem
题目传送门 /* 这题可以用stl的mutiset容器方便求解,我对这东西不熟悉,TLE了几次,最后用读入外挂水过. 题解有O(n)的做法,还以为我是侥幸过的,后来才知道iterator it写在循环 ...
随机推荐
- SQLAlchemy(1):单表操作
SQLAlchemy 是一个 ORM框架:类对应表,类中的字段对应表中的列,类的对象对应表的一条记录:作用:帮助我们使用类和对象快速实现数据库操作操作数据库的方式: 1. 原生SQL - pymysq ...
- 括号序列(Poj1141)
Poj1141 题目描述: 定义合法的括号序列如下: 1 空序列是一个合法的序列 2 如果S是合法的序列,则(S)和[S]也是合法的序列 3 如果A和B是合法的序列,则AB也是合法的序列 例如:下面的 ...
- AtCoder Grand Contest 020 D - Min Max Repetition
q<=1000个询问,每次问a,b,c,d:f(a,b)表示含a个A,b个B的字符串中,连续A或连续B最小的串中,字典序最小的一个串,输出这个串的c到d位.a,b<=5e8,d-c+1&l ...
- Eclipse-Java代码规范和质量检查插件-SonarLint
SonarQube(Sonar)之前的提供的本地工具是需要依赖SonarQube服务器的,这样导致其运行速度缓慢. 新出的SonarLint的扫描引擎直接安装在本地,速度超快,实时探测代码技术债务,给 ...
- JDBC实例代码
以下内容引用自http://wiki.jikexueyuan.com/project/jdbc/sample-code.html: 前提: 1.在MySQL中创建数据表和增加模拟数据: DROP TA ...
- 英特尔固态盘 说明书PDF
http://www.intel.cn/content/www/cn/zh/solid-state-drives/solid-state-drives-ssd.html
- mysql: reinit the password
You can reinit the password : 1.stop mysql /etc/init.d/mysql stop 2.start mysql safe : mysqld_safe - ...
- css 實現微信聊天類似的氣泡
要實現這樣的效果 代碼如下: --------------------------------------- <style> .test{width:300px; padding:30px ...
- 在Windows上安装Nexus
在Windows上安装Nexus 学习了:https://www.cnblogs.com/yucongblog/p/6696736.html 下载地址:https://sonatype-downloa ...
- MySQL 高可用架构在业务层面的分析研究
)读多写少 虚线表示跨机房部署,比方电子商务系统.一个Master既有读也有些写.对读数据一致性须要比較重要的.读要放在Master上面. M(R)仅仅是一个备库.仅仅有M(WR)挂了之后,才会切换到 ...