这道题我用了判联通量加暴力,但联通量判炸了。。。。然后从code[VS]上看到个不错的代码,就拿来了^_^...

基本思路是去掉环外的点,然后走每一个联通块。

 #include <iostream>
#include <cstdio>
#include <cstring> using namespace std; int n,fa[],x[],ru[],g[];
bool w[];
//fa记录当前节点的传递目标,x记录每个环中每个点的长度
//ru记录每个点的入度,g记录每个环中的最终长度 //快速读入
int getint()
{
int w=,q=;
char c=getchar();
while ((c>''||c<'')&&c!='-')
c=getchar();
if (c=='-') q=,c=getchar();
while (c>=''&&c<='') w=w*+c-'',c=getchar();
return q?-w:w;
} //删除当前点,如果他的下一个点也只有一个入度,那么递归删除
void shan(int k)
{
w[k]=;
ru[fa[k]]--;
if(ru[fa[k]]==)
shan(fa[k]);
} int main()
{
n=getint();
for (int i=; i<=n; i++)
fa[i]=getint(),ru[fa[i]]++; //读入 for (int i=; i<=n; i++)
if(ru[i]==&&!w[i]) //如果当前点只有一个入度
shan(i); //调用删除程序 for (int i=; i<=n; i++)
if(!w[i]) //如果i没被删除
{
x[]=fa[i];
int y=fa[i],ans=;
while (i!=y) //当环没有找到终点时
w[y]=,y=fa[y],x[++ans]=y; //递推
for (int j=; j<=ans; j++)
g[x[j]]=ans; //用g[最后一个点]记录最后的距离
} int ans=0x7fffffff;
for (int i=;i<=n;i++)
if(!w[i]) //如果m未被删除
ans=min(ans,g[i]); //取最小值
printf("%d",ans);
}

附DFS一个

#include <cstdio>
#include <cstring>
#include <algorithm>
#include <iostream>
#include <vector> using namespace std; const int MAXN = ; int n;
int fa[MAXN];
int dfn[MAXN];
int vis[MAXN], vi = ;;
int ans = 0x3f3f3f3f;
void dfs(int x, int df) { vis[x] = vi;
dfn[x] = df;
int nex = fa[x]; if (!vis[nex]) dfs(nex, df + );
else if (vis[nex] && vis[nex] != vi) return;
else if (vis[nex] == vi) {
ans = min(ans, df - dfn[nex] + );
return;
}
} int main() {
scanf("%d", &n);
for (int i = ; i <= n; i++) {
scanf("%d", &fa[i]);
}
for (int i = ; i <= n; i++) {
if (!vis[i]) {
vi++;
dfs(i, );
}
}
cout << ans << endl;
return ;
}

信息传递--NOIP2015 day1 T2--暴力的更多相关文章

  1. codevs 4511 信息传递(NOIP2015 day1 T2)

    4511 信息传递 NOIP2015 day1 T2 时间限制: 1 s 空间限制: 128000 KB 传送门 题目描述 Description 有个同学(编号为 1 到)正在玩一个信息传递的游戏. ...

  2. 洛谷P2661 信息传递==coedevs4511 信息传递 NOIP2015 day1 T2

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

  3. 信息传递 NOIP2015 day1 T2

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

  4. 【 NOIP2015 DAY1 T2 信息传递】带权并查集

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

  5. 洛谷P2661 信息传递 [NOIP2015] 并查集/乱搞 (待补充!

    感觉我好水啊,,,做个noip往年题目还天天只想做最简单的,,,实在太菜辽 然后最水的题目还不会正解整天想着乱搞,,,  虽然也搞出来辽233333 好滴不扯辽赶紧写完去做紫题QAQ 正解:并查集  ...

  6. 信息传递(NOIP2015)(寻找最小环。。)

    原题传送门 这是一道寻找最小环的题目. 在做的时候给每一个点染色.. 防止再做已经搜过的点(优化) v[]表示是否访问的过,以及第一次访问该点的时间. u[]表示染色.. 这道题还可以用拓补排序做. ...

  7. 【NOIP2015提高组】 Day1 T2 信息传递

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

  8. NOIP2015提高组T2 洛谷P2661 信息传递

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

  9. [NOIP2015] 提高组 洛谷P2661 信息传递

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

随机推荐

  1. jemter转换报告生成html格式报告

    前言: 结合上篇,因为使用Jenkins做集成,jmeter的结果肯定需要生产一个报告,如果按原本的jmt格式生成,肯定是不行的,现在就需要对报告格式进行转换 使用工具: ant:jmeter可以通过 ...

  2. poj动态规划列表

    [1]POJ 动态规划题目列表 容易: 1018, 1050, 1083, 1088, 1125, 1143, 1157, 1163, 1178, 1179, 1189, 1208, 1276, 13 ...

  3. MVC Action,Service中筛选int 和list<int>

    action: public ActionResult DeleteByID(int id) { this.MessageService.DeleteMailTemplate(id); var fro ...

  4. 用Drawing画图如何不会消失

    方法一:将事件放在form_Load中,在窗体中画图   1: protected void MainForm_Load(object sender,EventArgs e) 2: { 3: Init ...

  5. ashx文件要使用Session

    ashx文件要使用Session,必须实现Session接口; using System;using System.Web;using System.Web.SessionState; //第一步:导 ...

  6. MarkFan的程序员客栈

    历史上的今天:2013-12-27 跨平台移动开发 App-Framework DEMO 演示

  7. 一些常用css技巧的为什么(一)我所理解的margin

    要用到的基本术语和概念: 正常流:HTML文档的文本布局,在非西方语言中流的方向可能不同.大多数元素都在正常流中,浮动或定位可以让元素脱离正常流. 块级元素:像p,div之类的元素在正常流中会在其框之 ...

  8. Jquery 学习三

    一.each语句 1.each语句的功能 在jQuery中,通过$函数获取的都是jQuery对象.通过测试可知,jQuery对象是一个类数组的特殊对象,其是DOM对象的集合.而each语句就是专门用于 ...

  9. 洛谷 1865 A%B问题

    题目背景 题目名称是吸引你点进来的 实际上该题还是很水的 题目描述 区间质数个数 输入输出格式 输入格式: 一行两个整数 询问次数n,范围m 接下来n行,每行两个整数 l,r 表示区间 输出格式: 对 ...

  10. 《Apache数据传输加密、证书的制作》——涉及HTTPS协议

    首先了解http和https: HTTPS(Secure Hypertext Transfer Protocol)安全超文本传输协议. HTTPS和HTTP的区别: http是超文本传输协议,信息是明 ...