bzoj3918 [Baltic2014]Postman
2024-09-07 19:06:30
传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=3918
【题解】
每日至少更一题啊qwq凑任务(迷
明显猜个结论:随便搜环就行了
然后搜环姿势错了我也很无奈啊。。。
# include <stdio.h>
# include <string.h>
# include <algorithm>
// # include <bits/stdc++.h> using namespace std; typedef long long ll;
typedef long double ld;
typedef unsigned long long ull;
const int M = + ;
const int mod = 1e9+; # define RG register
# define ST static int n, m;
int head[M], nxt[M], to[M], tot = ;
inline void add(int u, int v) {
++tot; nxt[tot] = head[u]; head[u] = tot; to[tot] = v;
}
inline void adde(int u, int v) {
add(u, v);
add(v, u);
} bool vis[M];
int Final;
int c[M], cn, p[M]; inline void dfs(int x) {
if(p[x] != -) {
printf("%d", x);
for (int i=p[x]+; i<=cn; ++i) {
printf(" %d", c[i]);
p[c[i]] = -;
}
puts("");
cn = p[x];
return;
}
c[++cn] = x;
p[x] = cn;
for (int i=head[x]; i; i=nxt[i]) {
if(vis[i] || vis[i^]) continue;
head[x] = nxt[i];
vis[i] = ;
dfs(to[i]);
if(p[x] == -) break;
}
} int main() {
scanf("%d%d", &n, &m);
for (int i=; i<=m; ++i) {
int u, v; scanf("%d%d", &u, &v);
adde(u, v);
} for (int i=; i<=n; ++i) p[i] = -; for (int i=; i<=tot; i++)
if(!vis[i] && !vis[i^])
dfs(to[i]); return ;
}
最新文章
- 【NLP】Tika 文本预处理:抽取各种格式文件内容
- ThinkPHP 事务处理 (事务回滚) 、异常处理
- Leetcode 4 Median of Two Sorted Arrays 二分查找(二分答案+二分下标)
- SQLAlchemy Core插入数据,有好几种方法呢
- [ActionScript 3.0] AS3.0 下雨及涟漪效果
- 【学习笔记】【C语言】循环结构-for
- 支持向量机(SVM)算法的matlab的实现
- 通过blktrace, debugfs分析磁盘IO
- 【HDU 3435】 A new Graph Game (KM|费用流)
- gettid()和pthread_self()的区别
- [转]Delphi调用cmd的两种方法
- Mac 下 Scala 平台搭建
- JavaScript中遍历数组 最好不要使用 for in 遍历
- edu9E. Thief in a Shop
- iOS学习——(转)UIResponder详解
- Spark_RDD之RDD基础
- xlua修复C#的委托事件的时候,需要提前做好配置
- linux测试工程介绍(Linux Test Project)
- 关于VS2010的帮助文档更改路径
- The POSIX API/nss/nscd