NOIP2015提高组day1 —— 信息传递(message)
2015-12-12 22:18
337 查看
#include <fstream> #include <algorithm> using namespace std; ifstream fin("message.in"); ofstream fout("message.out"); const int MAX_n = 200000; int ancestor[MAX_n], transfer[MAX_n]; int union_find(int root) { if (ancestor[root] == root) return root; else return ancestor[root] = union_find(ancestor[root]); } int depth(int initial, int root) { int sum = 1; for (int i = initial; i != root; i = transfer[i]) sum++; return sum; } int main() { int n; fin >> n; for (int i = 0; i < n; i++) ancestor[i] = transfer[i] = i; int ans = n; for (int i = 0; i < n; i++) { fin >> transfer[i]; int roots = union_find(transfer[i]); if (i != roots) ancestor[i] = roots; else ans = min(ans, depth(transfer[i], i)); } fout << ans << endl; return 0; }
相关文章推荐
- 【NOIP2015】day1第一题:生活大爆炸版 石头剪刀布
- NOIP2015提高组day2 —— 跳石头(stone)
- [NOIP2015] 神奇的幻方 D1 T1
- NOIP2015普及组 —— 推销员(salesman)
- NOIP2015 day2 [二分][DP][树剖]
- NOIP2015 day1[tarjan][搜索][模拟][贪心]
- NOIP2015信息传递 强连通分量 tarjan
- NOIP2015 运输计划 解题报告(二分答案+树状差分)
- NOIP2015 跳石头 解题报告(二分答案)
- NOIP2015 子串 解题报告(DP)
- NOIP2015 斗地主 解题报告(搜索)
- NOIP2015 神奇的幻方 解题报告(水题模拟)
- 【noip2015】【搜索】斗地主
- 斗地主(深搜+贪心+剪枝)
- 【noip2015】【Day2】【二分】【倍增】运输计划
- cocos2dx 的android.mk编辑 添加Classes目录下的所有cpp文件
- [hdoj试题]A+B for Input-Output Practice (II)
- 使用SeaJS实现模块化JavaScript开发(新)
- HDU 5596 GTW likes gt 暴力~
- 多媒体编程(一)