题意:

  以每个点为起点,找到第一个出现两次的点

解析:

  我是先找出来所有的环  环上的点找出来的肯定是自己 bz[i]  = i;

然后去遍历不在环上的点j  如果通过这个点找到一个已经标记的的点i  那么bz[j] = bz[i];

行吧。。。其实直接暴力 就几行代码。。。真是的。。。过分。。。。我真是垃圾啊。。啦啦啦。。。呸。。

  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. const int maxn = , INF = 0x7fffffff;
  4. vector<int> G[maxn];
  5. vector<int> f;
  6. int vis[maxn], bz[maxn], a[maxn];
  7. int s, t, tmp;
  8. void dfs1(int u)
  9. {
  10. vis[u] = ;
  11. for(int i=; i<G[u].size(); i++)
  12. {
  13. int v = G[u][i];
  14. if(!vis[v])
  15. dfs1(v);
  16. else if(u != v)
  17. {
  18. s = v;
  19. tmp = u;
  20. return;
  21. }
  22. else
  23. {
  24. bz[v] = v;
  25. return;
  26. }
  27. }
  28. if(u == s)
  29. t = tmp;
  30. }
  31.  
  32. void dfs2(int u)
  33. {
  34. bz[u] = u;
  35. if(u == t) return;
  36. for(int i=; i<G[u].size(); i++)
  37. dfs2(G[u][i]);
  38. }
  39.  
  40. int dfs3(int u)
  41. {
  42. if(bz[u]) return bz[u];
  43. for(int i=; i<G[u].size(); i++)
  44. return dfs3(G[u][i]);
  45. }
  46.  
  47. int main()
  48. {
  49. int n, v;
  50. cin>> n;
  51. for(int i=; i<=n; i++)
  52. {
  53. cin>> a[i];
  54. G[i].push_back(a[i]);
  55. }
  56. for(int i=; i<=n; i++)
  57. if(!vis[i])
  58. {
  59. s = t = tmp = INF;
  60. dfs1(i);
  61. if(s != INF && t != INF)
  62. dfs2(s);
  63. }
  64. for(int i=; i<=n; i++)
  65. {
  66. if(bz[i]) continue;
  67. else
  68. bz[i] = dfs3(i);
  69. }
  70. for(int i=; i<=n; i++)
  71. cout<< bz[i] << " ";
  72. cout<<endl;
  73.  
  74. return ;
  75. }

Codeforces - 1020B Badge(找环)的更多相关文章

  1. Mouse Hunt CodeForces - 1027D(思维 找环)

    Medicine faculty of Berland State University has just finished their admission campaign. As usual, a ...

  2. Codeforces Beta Round #88 C. Cycle —— DFS(找环)

    题目链接:http://codeforces.com/problemset/problem/117/C C. Cycle time limit per test 2.5 seconds memory ...

  3. Codeforces Round #369 (Div. 2) D. Directed Roads —— DFS找环 + 快速幂

    题目链接:http://codeforces.com/problemset/problem/711/D D. Directed Roads time limit per test 2 seconds ...

  4. 【CodeForces】915 D. Almost Acyclic Graph 拓扑排序找环

    [题目]D. Almost Acyclic Graph [题意]给定n个点的有向图(无重边),问能否删除一条边使得全图无环.n<=500,m<=10^5. [算法]拓扑排序 [题解]找到一 ...

  5. CodeForces 711D Directed Roads (DFS找环+组合数)

    <题目链接> 题目大意: 给定一个$n$条边,$n$个点的图,每个点只有一条出边(初始状态),现在能够任意对图上的边进行翻转,问你能够使得该有向图不出先环的方案数有多少种. 解题分析: 很 ...

  6. [图中找环] Codeforces 659E New Reform

    New Reform time limit per test 1 second memory limit per test 256 megabytes input standard input out ...

  7. zstu.4191: 无向图找环(dfs树 + 邻接表)

    4191: 无向图找环 Time Limit: 5 Sec  Memory Limit: 128 MB Submit: 117  Solved: 34 Description 给你一副无向图,每条边有 ...

  8. Cyclic Components CodeForces - 977E(找简单环)

    题意: 就是找出所有环的个数, 但这个环中的每个点都必须只在一个环中 解析: 在找环的过程中 判断度数是否为2就行...emm... #include <bits/stdc++.h> us ...

  9. SGU 219 Synchrograph tarjian找环,理解题意,图论 难度:3

    http://acm.sgu.ru/problem.php?contest=0&problem=219 题目大意: 如果指向某个点的边权全都为正数,那么这个点就是可点燃的,点燃操作把入弧权值- ...

随机推荐

  1. Theano3.7-练习之堆叠消噪自动编码器

    来自:http://deeplearning.net/tutorial/SdA.html#sda Stacked Denoising Autoencoders (SdA) note:这部分需要读者读过 ...

  2. 通过HttpWebRequest调用webService

    调用远端接口,向远端接口写入一个xml文件(loginLog为xml的字符串).关键方法如下: public object InsertAuditLog(string loginLog) { //Ws ...

  3. Docker中查看Mysql数据库中的各环境参数

    通过官方的文档可以看到运行MySQL容器的命令是: docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=mypwd -d mysql:tag 如:d ...

  4. PHP和PHPINFO

    PHP开放源码和跨越平台,PHP可以运行在WINDOWS和多种版本的LINUX上.它不需要任何预先处理而快速反馈结果,它也不需要mod_perl的调整来使您的服务器的内存映象减小.PHP消耗的资源较少 ...

  5. 【php增删改查实例】第八节 - 部门管理模块(编写PHP程序)

    首先,在同级目录新建一个query.php文件: 接着,去刷新页面,打开F12,NetWork,看看当前的请求能不能走到对应的php文件? 这就说明datagrid确实能够访问到query.php 只 ...

  6. Word2010去除灰色中括号标记

    在使用的Word复制内容时,有时会出现这种情况: 去除灰色中括号 出现这种情况,是因为无意中插入了书签.解决方案如下: 或者直接使用ctrl+shift+F5,选择要删除的标签

  7. TMS320VC5509使用nof flash AM29LV400

    1. 硬件接口如下,其中nor flash的使用方法,写的时候和NAND FLASH是一样的,读的时候和DRAM是一样的 2. 看下擦除指令和编程指令 3. 代码如下 #include <csl ...

  8. 设计模式 笔记 策略模式 Strategy

    //---------------------------15/04/28---------------------------- //Strategy 策略模式----对象行为型模式 /* 1:意图 ...

  9. python的闭包函数

    在一个外函数中定义了一个内函数,内函数里运用了外函数的临时变量,并且外函数的返回值是内函数的引用.这样就构成了一个闭包. #闭包函数的实例# outer是外部函数 a和b都是外函数的临时变量def o ...

  10. [Hanani]JAVA大数相关学习记录

    1.Basic remains 题目链接 涉及内容: |大数读入|大数模|大数进制读入时转化为十进制|大数输出时转化为其他进制输出| import java.io.*; import java.mat ...