首页 > 代码库 > bzoj3918 [Baltic2014]Postman
bzoj3918 [Baltic2014]Postman
传送门: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 = 1500000 + 10; const int mod = 1e9+7; # define RG register # define ST static int n, m; int head[M], nxt[M], to[M], tot = 1; 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] != -1) { printf("%d", x); for (int i=p[x]+1; i<=cn; ++i) { printf(" %d", c[i]); p[c[i]] = -1; } 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^1]) continue; head[x] = nxt[i]; vis[i] = 1; dfs(to[i]); if(p[x] == -1) break; } } int main() { scanf("%d%d", &n, &m); for (int i=1; i<=m; ++i) { int u, v; scanf("%d%d", &u, &v); adde(u, v); } for (int i=1; i<=n; ++i) p[i] = -1; for (int i=2; i<=tot; i++) if(!vis[i] && !vis[i^1]) dfs(to[i]); return 0; }
bzoj3918 [Baltic2014]Postman
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。