今天在题库发现了一个wa了很久还没调过的题,这个题呢是2015年noip的day1t2,莫名感觉难度上升(其实水的一匹)。

这道题输出是3,其实就是一个图中让你找最小环,尽管我不会找环,但是要是我的话应该也是可以水过部分分的,尧神说这道题咋打都能过,但我不会啊,于是开始了模拟,开了两个动态的数组进行模拟这个过程,一个传个另一个(很傻的做法)但我还是打了,代码量100+,于是轻轻松松过了样例点了提交不知道能过多少,嗯,20分,还行,后面dalao说这道题简单的很,交给我并茶几判环,不会啊,代码量就顶多50+,过了,然后一直看他的代码,记忆性的打出了他的代码理解不了最后在洛谷上找了篇题解,才发现自己没真正理解题目,画了个图知道了真正的找最小环,topsort完以后剩下的就剩环了dfs寻找最小的就行了,也还算简单,深刻理解环。

代码:

#include<iostream>
#include<cstring>
#include<string>
#include<cmath>
#include<ctime>
#include<cstdio>
#include<iomanip>
#include<algorithm>
#include<vector>
#include<stack>
#include<queue>
#include<map>
using namespace std;
inline int read()
{
int x=,f=;char ch=getchar();
while(ch<''||ch>''){if(ch=='-')f=-;ch=getchar();}
while(ch>=''&&ch<=''){x=x*+ch-'';ch=getchar();}
return x*f;
}
const int maxn=;
int a[maxn],d[maxn],b[maxn],ans=1e8;
int n;
void delet(int x)
{
d[x]=-;
b[a[x]]--;
if(b[a[x]]==&&d[a[x]]!=-)
delet(a[x]);
}
void dfs(int r,int l,int num)
{
if(l==r&&num!=)
{
ans=min(ans,num);
return;
}
if(d[a[r]]==)
{
d[a[r]]=;
dfs(a[r],l,num+); }
}
int main()
{
//freopen("1.in","r",stdin);
n=read();
memset(d,,sizeof(d));
memset(b,,sizeof(b));
memset(a,,sizeof(a));
for(int i=;i<=n;i++)
a[i]=read(),b[a[i]]++;
for(int i=;i<=n;i++)
{
if(b[i]==&&d[i]!=-)
{
delet(i);
}
}
for(int i=;i<=n;i++)
{
if(d[i]==)
dfs(i,i,);
}
printf("%d\n",ans);
return ;
}

闻道玉门犹被遮,应将性命逐轻车。

拓扑_dfs——找最小环的更多相关文章

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

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

  2. G - Pandaland HDU - 6005 (找最小环)

    题目链接:https://cn.vjudge.net/contest/275153#problem/G 具体思路: 我们可以按照暴力的方法进行做 , 我们可以枚举每一条边,将这条边的权值设置为inf, ...

  3. 2015 提高组 信息传递--tarjan找最小环

    P2661 信息传递 题目描述 有 n 个同学(编号为 1 到 n )正在玩一个信息传递的游戏.在游戏里每人都有一个固定的信息传递对象,其中,编号为 i 的同学的信息传递对象是编号为 Ti​ 的同学. ...

  4. bzoj2938 AC自动机 + 拓扑排序找环

    https://www.lydsy.com/JudgeOnline/problem.php?id=2938 题意:给出N个01病毒序列,询问是否存在一个无限长的串不存在病毒序列 正常来说,想要寻找一个 ...

  5. Codeforces Round #580 (Div. 2)-D. Shortest Cycle(思维建图+dfs找最小环)

    You are given nn integer numbers a1,a2,…,ana1,a2,…,an. Consider graph on nn nodes, in which nodes ii ...

  6. tg2015 信息传递 (洛谷p2661)

    题目描述 有n个同学(编号为1到n)正在玩一个信息传递的游戏.在游戏里每人都有一个固定的信息传递对象,其中,编号为i的同学的信息传递对象是编号为Ti同学. 游戏开始时,每人都只知道自己的生日.之后每一 ...

  7. hdu6005找带权最小环

    题意:给你点和边,让你找最小环的权值,其权值是所有边权的和,没环输出-1. 解法:枚举每一条边,找到其端点,做最短路.. #include<cstdio> #include<cstr ...

  8. floyd离散,最小环

    Description 杭州有N个景区,景区之间有一些双向的路来连接,现在8600想找一条旅游路线,这个路线从A点出发并且最后回到A点,假设经过的路线为V1,V2,....VK,V1,那么必须满足K& ...

  9. [bzoj 1027][JSOI2007]合金(解析几何+最小环)

    题目:http://www.lydsy.com:808/JudgeOnline/problem.php?id=1027 分析: 首先因为一个合金的和为1,所以考虑2个材料合金能否合成一个需求合金的时候 ...

随机推荐

  1. linux下中文文件名乱码解决

    在windows上使用ftp上传文件到Linux上,中文名称在Linux系统中显示为乱码.虽然将Linux的env设置了LANG=en_US.UTF-8,并且本地的Shell客户端编码也设置成UTF- ...

  2. script 里写 html 模版

    js模版引擎(例如:template.js 或 handlebars.js)一般都用<script>标签来存放模版的内容 1)模版写在<script>标签和写在<div& ...

  3. jenkins构建的robot result结果不更新

    描述:构建的结果不进行更新,仍然显示以往的构建结果 定位原因:pybot 命令中生成的结果文件保存路径与构建后robot结果显示路径不一致所致 解决办法:修改二者的结果保存路径一致

  4. IIS URL Rewrite Module的防盗链规则设置

    IIS版本:IIS 7.5 URL Rewrite组件:IIS URL Rewrite Module(http://www.iis.net/downloads/microsoft/url-rewrit ...

  5. Git 学习笔记--1.Git基础操作

    取得项目的Git仓库 有两种方式取得Git项目仓库.第一种是在现存的目录下,通过导入所有文件来创建新的Git仓库.第二种是从已有的Git仓库克隆出一个新的镜像仓库. 在工作目录中初始化新仓库  要对现 ...

  6. SpringBoot(九)-- SpringBoot JDBC

    1.属性配置文件(application.properties) # type 可以修改连接池类型,默认采用Tomcat的连接池 # spring.datasource.type=com.alibab ...

  7. 【译】Apache Flink Kafka consumer

    Flink提供了Kafka connector用于消费/生产Apache Kafka topic的数据.Flink的Kafka consumer集成了checkpoint机制以提供精确一次的处理语义. ...

  8. OpenCV——识别各省份地图轮廓

    好久没有发OpenCV的博客了,最近想到了一个识别地图轮廓的方案,就写来试试.(识别中国的28个省份地图轮廓,不考虑直辖市) 首先,我的基本思路是  用最小的矩形将地图的轮廓圈出来,可以根据长方形的长 ...

  9. 二.jquery.datatables.js表格数据添加

    1.后台php public function addtable(){ $data = $_POST; if(M('yanfa_project')->add($data)){ $this-> ...

  10. sea.js常用接口

    seajs.config 用来对 Sea.js 进行配置. seajs.config({ // 指定需要使用的插件 plugins: ['text', 'shim'], // 设置别名,方便调用 al ...