您的位置:首页
Codeforces Round #363 (Div. 1) B. Fix a Tree 树的拆环
2016-07-20 10:17
239 查看
题目链接:http://codeforces.com/problemset/problem/698/B
题意:告诉你n个节点当前的父节点,修改最少的点的父节点使之变成一棵有根树。
思路:拆环。
题解:http://codeforces.com/blog/entry/46148
代码:
题意:告诉你n个节点当前的父节点,修改最少的点的父节点使之变成一棵有根树。
思路:拆环。
题解:http://codeforces.com/blog/entry/46148
代码:
#include <cstdio> const int maxn = 200200; int f[maxn], vis[maxn], n, s, cnt, idx; int Find(int x) { vis[x] = ++ idx; while (!vis[ f[x] ]) { x = f[x]; vis[x] = idx; } if (vis[ f[x] ] == idx) { if (s == 0) s = x; if (f[x] != s) { f[x] = s; cnt ++; } } } int main() { scanf("%d", &n); for (int i = 1; i <= n; i ++) scanf("%d" , f + i); for (int i = 1; i <= n; i ++) if (i == f[i]) s = i; for (int i = 1; i <= n; i ++) if (!vis[i]) Find(i); printf("%d\n", cnt); for (int i = 1; i <= n; i ++) printf("%d ", f[i]); return 0; }
相关文章推荐
- gitlab 安装报错:Could not find modernizr-2.6.2 in any of the sources
- Codeforces Round #363 (Div. 2) 题解报告
- linux工作常用命令
- c++11多线程之主线程与子线程数据传输与共享
- Android Volley框架使用(三)
- JavaScript学习笔记二十三:浏览器对象
- Maven项目导入后报错
- Codeforces Round #363 (Div. 2) C. Vacations(简单动态规划)
- es6学习笔记11--Proxy和Reflect
- Cannot launch AVD in emulator
- Android内存泄漏的八种可能
- socket长连接、短连接以及心跳包机制
- Error ITMS-90635 invalid Mach-o format. the mach-o in hundle “*** ***.app/Frameworks/Result.framewo
- matlab一段音频取固定点数目
- android之自定义View和ViewGroup(五)(代码篇,实现类似竖着的ViewPager引导页,竖向引导页)
- jquery的几种异步请求,ajax
- Python包管理工具——Pip方法大全
- http://blog.csdn.net/ameyume/article/details/9958951
- Android ListView的字母排序和过滤搜索功能
- codeforces 699B One Bomb