随笔分类 - 图论-欧拉回路
摘要:题面:https://www.luogu.org/problem/P1341 cpp 本题是一个欧拉回路模板题,直接建图跑欧拉回路即可,注意:有环时需回溯后再记录. Code: include include include include include using namespace std;
阅读全文
摘要:```cpp 混合图(既有有向边又有无向边的图)中欧拉环、欧拉路径的判定需要借助网络流! (1)欧拉环的判定: 一开始当然是判断原图的基图是否连通,若不连通则一定不存在欧拉环或欧拉路径(不考虑度数为0的点)。 其实,难点在于图中的无向边,需要对所有的无向边定向(指定一个方向,使之变为有向边),使整个图变成一个有向欧拉图(或有向半欧拉图)。若存在一个定向满足此条件,则原图是欧拉图(或半欧拉图)否...
阅读全文
摘要:```cpp
无向图:因为欧拉路径中,除了起点与终点以外,任意点的“进”“出”次数相等,所以除了两个点为奇点(度数为奇数的点)(终点和起点)以外,其它点的度数均为偶数。
如果是欧拉回路,奇点的个数应该为0。
有向图:欧拉路径中,最多只有两个点的入度不等于出度。起点出度比入度大1,终点入度比出度大1。
如果是欧拉回路,所有点的 入度=出度 。
```
阅读全文
摘要:```cpp 【题目描述】: 给你无向图的N个点和M条边,保证这M条边都不同且不会存在同一点的自环边,现在问你至少要几笔才能所有边都画一遍。(一笔画的时候笔不离开纸) 【输入描述】: 多组数据,每组数据用空行隔开。 对于每组数据,第一行两个整数N,M表示点数和边数。接下去M行每行两个整数a,b ,表
阅读全文
摘要:题面:https://www.luogu.org/problemnew/show/P3520 cpp 本题直接用跑欧拉回路找环即可。 Code: include using namespace std; int t,ansn,n,m,dis[2200000],f[2200000],vis[12000
阅读全文
摘要:```cpp include include int cnt[1001]; int pre[1001]; int find(int x) { int r=x; while(r!=pre[r]) { r=pre[r]; } return r; } int main() { int n,m; while
阅读全文
摘要:```cpp 【题目描述】: 有 N 个盘子,每个盘子上写着一个仅由小写字母组成的英文单词。你需要给这些盘子安排一个合适的顺序,使得相邻两个盘子中,前一个盘子上单词的末字母等于后一个盘子上单词的首字母。请你编写一个程序,判断是否能达到这一要求。如果能,请给出一个合适的顺序。 【输入描述】: 多组数据。第一行给出数据组数T,每组数据第一行给出盘子数量N,接下去N行给出小写字母字符串,一种字符串...
阅读全文
摘要:```cpp 题目背景 Farmer John每年有很多栅栏要修理。他总是骑着马穿过每一个栅栏并修复它破损的地方。 题目描述 John是一个与其他农民一样懒的人。他讨厌骑马,因此从来不两次经过一个栅栏。你必须编一个程序,读入栅栏网络的描述,并计算出一条修栅栏的路径,使每个栅栏都恰好被经过一次。Joh
阅读全文
摘要:```cpp include include include include include include include include using namespace std; const int N=2005; int n,a,b,G[N][N],d[N],ans[N],Cnt; void
阅读全文
摘要:```cpp include include include include include include include include using namespace std; const int MAXN=111; stackS; int edge[MAXN][MAXN]; int n,m;
阅读全文
摘要:```cpp #include #include #include using namespace std; int n; int a[101][101]; int indegree[101]; int outdegree[101]; int bfs(); int ans[101][101]; int compare(); void print(int i); int ma...
阅读全文
摘要:```cpp include include include using namespace std; const int maxn=1002; vector graph[maxn]; int n,m,cnt,in; bool visited[maxn]; void dfs(int v) { for
阅读全文

浙公网安备 33010602011771号