[SCU - 4520 Euler] 欧拉通路的判定
来源:互联网 发布:windows kill进程命令 编辑:程序博客网 时间:2024/05/22 10:48
[SCU - 4520 Euler]欧拉通路的判定
题目链接:[SCU - 4520 Euler]
解题思路:
- 无向图存在欧拉回路的充要条件:连通且没有奇度顶点。
- 无向图存在欧拉路径的充要条件:连通且奇度顶点个数为2。
- 有向图存在欧拉路径的充要条件:基图连通且存在某顶点入度比出度大1,另一顶点出度比入度大1,其余顶点入度等于出度。
- 有向图存在欧拉回路的充要条件:基图连通且所有顶点入度等于出度。
#include <bits/stdc++.h>using namespace std;const int MAXN = 1000 + 5;int T, N, M;int deg[MAXN];int par[MAXN];int in[MAXN], out[MAXN];int Find (int x) { return par[x] == -1 ? x : par[x] = Find (par[x]);}void Union (int a, int b) { int pa = Find (a), pb = Find (b); if (pa != pb) par[pb] = pa;}void init() { memset (deg, 0, sizeof (deg) ); memset (in, 0, sizeof (in) ); memset (out, 0, sizeof (out) ); memset (par, -1, sizeof (par) );}bool connected() { int cnt = 0; for (int i = 1; i <= N; i++) { if (par[i] == -1) cnt ++; } return cnt <= 1;}bool dir() { int num; num = 0; for (int i = 1; i <= N; i++) { if (deg[i] & 1) num ++; } return (num == 0 || num == 2);}bool undir() { int num, s, t; num = 0; s = t = -1; for (int i = 1; i <= N; i++) { if(out[i] > in[i]) s = i, num ++; else if(in[i] > out[i]) t = i, num ++; } if(!(num == 0 || (num == 2 && ~s && ~t && (out[s] - in[s]) == 1) && (out[t] - in[t]== -1))) return false;}int main() {/// freopen ("input.txt", "r", stdin); int u, v; scanf("%d", &T); while (T --) { init(); scanf ("%d %d", &N, &M); for (int i = 1; i <= M; i++) { scanf ("%d %d", &u, &v); deg[u] ++, deg[v] ++; Union (u, v); out[u] ++, in[v] ++; } bool con, res1, res2; con = connected(); if(!con) { puts("No No"); continue; } res1 = dir(); res2 = undir(); printf("%s %s\n", res1 ? "Yes" : "No", res2 ? "Yes" : "No"); } return 0;}
1 0
- [SCU - 4520 Euler] 欧拉通路的判定
- Euler(欧拉通路)
- 欧拉回路 欧拉通路的判定
- 欧拉通路 欧拉回路的区别 及其判定
- 混合图的欧拉回路(通路)判定
- 欧拉通路 欧拉回路的判定 Hdu 1878 欧拉回路
- Codeforces 508D Tanya and Password 欧拉通路Euler
- 弗罗莱(Fleury)算法 欧拉(Euler)通路/回路
- 弗罗莱(Fleury)算法 欧拉(Euler)通路/回路
- 欧拉通路的求解
- 欧拉回路(通路)的输出
- 欧拉通路
- hdu5883【欧拉通路】
- 欧拉通路、回路
- 欧拉通路
- POJ 2513 Colored Sticks 字典树+欧拉通路判定+并查集
- 欧拉回路的判定
- 【SCU 4520】Euler(并查集)
- 软件公司模式
- java MVC 的设计实现过程
- AngularJS ng-class用法
- angularjs学习笔记—指令input
- 表单验证<AngularJs>
- [SCU - 4520 Euler] 欧拉通路的判定
- msql笔记七——ThreadLocal保证客户端同时拿到的是同一个连接,数据库多事务的处理
- android 事件分发,解决由于listview中实时刷新,导致子view点击事件失效
- java面向对象基础
- C#调用C++生成的Dll库,Dll使用callback向C#传递指针
- 杂想1:交水电费
- [OpenGL]游戏中的动态追踪算法
- String与StringBuffer之间的关系,以及如何去转换
- 一些十分有用的blog地址