信息传递--NOIP2015 day1 T2--暴力
这道题我用了判联通量加暴力,但联通量判炸了。。。。然后从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--暴力的更多相关文章
- codevs 4511 信息传递(NOIP2015 day1 T2)
4511 信息传递 NOIP2015 day1 T2 时间限制: 1 s 空间限制: 128000 KB 传送门 题目描述 Description 有个同学(编号为 1 到)正在玩一个信息传递的游戏. ...
- 洛谷P2661 信息传递==coedevs4511 信息传递 NOIP2015 day1 T2
P2661 信息传递 题目描述 有n个同学(编号为1到n)正在玩一个信息传递的游戏.在游戏里每人都有一个固定的信息传递对象,其中,编号为i的同学的信息传递对象是编号为Ti同学. 游戏开始时,每人都只知 ...
- 信息传递 NOIP2015 day1 T2
题文: 有n个同学(编号为1到n)正在玩一个信息传递的游戏.在游戏里每人都有一个固定的信息传递对象,其中,编号为i的同学的信息传递对象是编号为Ti同学. 游戏开始时,每人都只知道自己的生日.之后每一轮 ...
- 【 NOIP2015 DAY1 T2 信息传递】带权并查集
题目描述 有n个同学(编号为1到n)正在玩一个信息传递的游戏.在游戏里每人都有一个固定的信息传递对象,其中,编号为i的同学的信息传递对象是编号为Ti同学. 游戏开始时,每人都只知道自己的生日.之后每一 ...
- 洛谷P2661 信息传递 [NOIP2015] 并查集/乱搞 (待补充!
感觉我好水啊,,,做个noip往年题目还天天只想做最简单的,,,实在太菜辽 然后最水的题目还不会正解整天想着乱搞,,, 虽然也搞出来辽233333 好滴不扯辽赶紧写完去做紫题QAQ 正解:并查集 ...
- 信息传递(NOIP2015)(寻找最小环。。)
原题传送门 这是一道寻找最小环的题目. 在做的时候给每一个点染色.. 防止再做已经搜过的点(优化) v[]表示是否访问的过,以及第一次访问该点的时间. u[]表示染色.. 这道题还可以用拓补排序做. ...
- 【NOIP2015提高组】 Day1 T2 信息传递
题目描述 有n个同学(编号为1到n)正在玩一个信息传递的游戏.在游戏里每人都有一个固定的信息传递对象,其中,编号为i的同学的信息传递对象是编号为Ti同学. 游戏开始时,每人都只知道自己的生日.之后每一 ...
- NOIP2015提高组T2 洛谷P2661 信息传递
题目描述 有n个同学(编号为1到n)正在玩一个信息传递的游戏.在游戏里每人都有一个固定的信息传递对象,其中,编号为i的同学的信息传递对象是编号为Ti同学. 游戏开始时,每人都只知道自己的生日.之后每一 ...
- [NOIP2015] 提高组 洛谷P2661 信息传递
题目描述 有n个同学(编号为1到n)正在玩一个信息传递的游戏.在游戏里每人都有一个固定的信息传递对象,其中,编号为i的同学的信息传递对象是编号为Ti同学. 游戏开始时,每人都只知道自己的生日.之后每一 ...
随机推荐
- EntityFramework使用中的一些Bug
1. No Entity Framework provider found for the ADO.NET provider 解决方法:添加 EntityFramework.SqlServer.dl ...
- 【CSS3】---text-overflow 与 word-wrap
text-overflow用来设置是否使用一个省略标记(...)标示对象内文本的溢出. 语法: 但是text-overflow只是用来说明文字溢出时用什么方式显示,要实现溢出时产生省略号的效果,还须定 ...
- 【AngularJs】---JSONP跨域访问数据传输
大家会自然想到只有一个字母之差的JSON吧~ JSON(JavaScript Object Notation)和JSONP(JSON with Padding)虽然只有一个字母的差别,但其实他们根本不 ...
- Linux命令(2):ls命令
1.作用:列出目录的内容: 2.格式:ls [选项] [文件] [选项]为指定要查看文件相关的内容,若未指定文件默认查看当前目录下的所有文件: 3.常见参数: 如图: 4.使用实例: [yournam ...
- jQuery AJAX Call for posting data to ASP.Net page ( not Get but POST)
the following jQuery AJAX call to an ASP.Net page. $.ajax({ async: true, type: "POST", url ...
- 使用eBay API基本步骤介绍
要开始使用eBay API,需要如下基本步骤: 1. 注册开发帐号: https://developer.ebay.com/join/Default.aspx 2. 选择API类型: eB ...
- 7款HTML5的精美应用教程让你立即爱上HTML5
1,HTML5/jQuery雷达动画图表图表配置十分简单 分享一款很特别的HTML5图表,它是利用HTML5和jQuery的雷达动画图表,图表数据在初始化的时候带有一定动画. 在线演示 源码下载 2, ...
- conditon监视器接口
conditon监视器接口的实例对象必须通过Lock.newCondition()建立 立
- Model Builder中Table2Table中字段映射的问题
ArcGIS10中使用过程中,Bug不少.尽管有了SP3,但模型耦合的深层次的应用中还是错误不少.目前只是遇到一个,利用躲避的方法解决一个.例如,从NetCDF中抽出的数据表,必须在内存和数据库中都存 ...
- Android实现Http协议案例
在Android开发中,使用Http协议实现网络之间的通信是随处可见的,使用http方式主要采用2中请求方式即get和post两种方式. 一.使用get方式: HttpGet httpGet = ne ...