P2921 [USACO08DEC]在农场万圣节Trick or Treat on the Farm

对于一个牛,它存在两种状态:1.处于联通分量 2.不处于联通分量。对于处于联通分量的牛,求出联通分量的大小;对于不处于联通分量的牛,求出其距离联通分量的路程+联通分量大小。

不同的联通分量,染上不同的颜色,可以计算各个联通分量的大小。

#include<bits/stdc++.h>
using namespace std;int vis[100005];
int low[100005];
int Loop[100005],color[100005],dfn[100005],head[100005],ans[100005],st[100005], Next[100005];
int pos;
int k=1;
int col;
int top;struct node
{int v,next;
}edge[100005];void Add(int u,int v)
{edge[k].v = v;edge[k].next = head[u];head[u] = k++;
}void Find(int root,int x,int step)
{if(ans[x]!=0){ans[root] = ans[x]+step;return;}elseFind(root,Next[x],step+1);
}void Tarjan(int u)
{dfn[u] = low[u] = ++pos;st[++top] = u;vis[u] = 1;for(int i=head[u];i!=-1;i=edge[i].next){int v = edge[i].v;if(!dfn[v]){Tarjan(v);low[u] = min(low[u],low[v]);}else if(vis[v]){low[u] = min(low[u],dfn[v]);}}if(dfn[u] == low[u]){col++;int x;do{x = st[top--];vis[x] = 0;color[x] = col;}while(x!=u);}
}int main()
{memset(head,-1,sizeof(head));int n,v;scanf("%d",&n);for(int i=1;i<=n;i++){scanf("%d",&v);Next[i] = v;Add(i,v);if(v==i)ans[i] = 1;}for(int i=1;i<=n;i++){if(!dfn[i]){Tarjan(i);}}for(int i=1;i<=n;i++){Loop[color[i]]++;}for(int i=1;i<=n;i++){if(Loop[color[i]]!=1)ans[i] = Loop[color[i]];}for(int i=1;i<=n;i++){if(ans[i]==0)Find(i,Next[i],1);}for(int i=1;i<=n;i++){printf("%d\n",ans[i]);}return 0;
}
View Code

 

转载于:https://www.cnblogs.com/alan-W/p/10756744.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/394101.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ASP.NET MVC5+EF6+EasyUI 后台管理系统(1)-前言与目录(持续更新中...)

开发工具&#xff1a;VS2015(2012以上)SQL2008R2以上数据库 您可以有偿获取一份最新源码联系QQ:729994997 价格 666RMB 升级后界面效果如下&#xff1a; 日程管理 http://www.cnblogs.com/ymnets/p/7094914.html 任务调度系统界面 http://www.cnblogs.com/ymnets/p/5065154.h…

【FRDM-K64F学习笔记】使用ARM mbed和Keil MDK下载你的第一个程序

FRDM-K64F开发平台采用MK64FN1M0VLL12微控制器。该控制器包含一个带有浮点单元的ARM Cortex-M4内核。其最高工作频率为120MHz&#xff0c;具有256KB的RAM、1MB闪存以及许多其他外设。它非常适合大多数可以采用以太网、SD卡存储以及板载模拟-数字转换器的IoT应用。但是&#xff…

php 实时更新内容_亿级视频内容如何实时更新?优酷视频背后的技术揭秘

简介&#xff1a; 优酷视频内容数据天然呈现巨大的网络结构&#xff0c;各类数据实体连接形成了数十亿顶点和百亿条边的数据量&#xff0c;面对巨大的数据量&#xff0c;传统关系型数据库往往难以处理和管理&#xff0c;图数据结构更加贴合优酷的业务场景&#xff0c;图组织使用…

物联网商机迸发 LPWAN芯片现身 本文转自d1net(转载)

联发科技发表首款NB-IoT系统单芯片MT2625。来源&#xff1a;MediaTeK 物联网(IoT)带动的庞大商机吸引各方业者积极投入&#xff0c;尤其是各种联网技术不断现身&#xff0c;争夺各式各样极富发展潜力的应用领域。 根据IDC的调查报告&#xff0c;物联网市场在2017年声势看涨&…

jquery之stop()的用法

工作中遇到过的实际案例&#xff1a; 1、我在项目里做的一个下拉菜单&#xff0c;当鼠标移上去的时候就菜单显示&#xff0c;当鼠标离开的时候菜单隐藏 如果我快速不断地将鼠标移入移出菜单&#xff08;即&#xff0c;当菜单下拉动画未完成时&#xff0c;鼠标又移出了菜单&…

学会这二十个正则表达式,能让你少些1000行代码!

正则表达式&#xff0c;是一个强大且高效的文本处理工具。通常情况下&#xff0c;通过一段表达准确的表达式&#xff0c;能够非常简短、快速的实现复杂业务逻辑。因此&#xff0c;正则表达式通常是一个成熟开发人员的标配&#xff0c;可以辅助实现开发效率的极强提升。在需要实…

为啥JAVA虚拟机不开发系统_理解Java虚拟机体系结构

1 概述众所周知&#xff0c;Java支持平台无关性、安全性和网络移动性。而Java平台由Java虚拟机和Java核心类所构成&#xff0c;它为纯Java程序提供了统一的编程接口&#xff0c;而不管下层操作系统是什么。正是得益于Java虚拟机&#xff0c;它号称的“一次编译&#xff0c;到处…

Android WindowManager和WindowManager.LayoutParams的使用以及实现悬浮窗口的方法

1.理清概念 我们使用过Dialog和PopupWindow,还有Toast,它们都显示在Activity之上。那么我们首先需要理解的是android中是如何去绘制这些UI的呢&#xff1f;这里我只讲我所理解的&#xff0c;首先看一层次图&#xff08;盗用网络&#xff09;首先我们看到左边的Activity层&#…

Java集合中的细节

integer数据对比 对于Integer var ? 在-128至127范围内的赋值&#xff0c;Integer对象是在IntegerCache.cache产生&#xff0c;会复用已有对象&#xff0c;这个区间内的Integer值可以直接使用进行判断&#xff0c;但是这个区间之外的所有数据&#xff0c;都会在堆上产生&…

Android开发系列之屏幕密度和单位转换

由于Android的开源性&#xff0c;所以目前市面上面Android手机的分辨率特别多&#xff0c;这样的话就给我适配带来了一定的难度。要想做好适配&#xff0c;我们首先应该明白什么是分辨率、PPI、屏幕大小等概念&#xff0c;还有在不同的屏幕密度下&#xff0c;各个单位之间的转换…

让机器读懂用户——大数据中的用户画像

让机器读懂用户——大数据中的用户画像 摘要&#xff1a; 用户画像(persona)的概念最早由交互设计之父Alan Cooper提出:“Personas are a concrete representation of target users.” 是指真实用户的虚拟代表&#xff0c;是建立在一系列属性数据之上的目标用户模型。随着互联…

activeMQ在文件上传的应用

本次试验主要用到了activeMq和上传插件uploadify的知识&#xff0c;感谢以下两篇文章的作者。 1.http://itindex.net/detail/47160-java-jquery-%E4%B8%8A%E4%BC%A0 2.http://blog.csdn.net/jiuqiyuliang/article/details/47160259 本文中不再提供activeMq和uploadify的介绍。 …

谢烟客---------Linux之DNS服务系统的基础知识

DNS Domain Name Server1)C/S架构&#xff1a;SOCKET通信IP PORT2&#xff09;应用层协议&#xff1a;资源子网BIND Berkerley Information Name DomainDNS由来1&#xff09;统一名字&#xff0c;自己维护 <自己查询>解析: 基于key查找value: 查询数据库(二维关系的表: …

ES6对象的扩展

1.属性简写表示 2.方法简写表示 属性与方法简写&#xff1a; 3.属性名表达式 ES6允许字面量定义对象时&#xff0c;用方法二&#xff08;表达式&#xff09;作为对象的属性名&#xff0c;即把表达式放在方括号内。 4.Object.is()比较两个值是否严格相等 转载于:https://www.cnb…

Spring Cloud项目MVN编译 -- Non-resolvable import POM

最近利用闲余时间&#xff0c;打算搭建一套基于Spring Cloud G版的微服务架构(Spring boot 2.1.0)&#xff0c;一顿操作之后,IDEA也没有提示什么错误,自认为微服务搭建完毕。启动项目前&#xff0c;习惯性的Maven -clean了一下&#xff0c;我去&#xff0c;IDEA里面的Maven Pro…

mysql windows身份验证_SQL Server 2005 怎么就不能用Windows身份验证方式登录呢?

SQL Server 2005 自从装到我的电脑上始终无法使用Windows身份验证的方式登录,由于使用用户名和密码登录还算顺畅,所以一直忽略了这SQL Server 2005 自从装到我的电脑上始终无法使用Windows身份验证的方式登录,由于使用用户名和密码登录还算顺畅,所以一直忽略了这个问题,直到又有…

NOIP2011 铺地毯

题目描述 为了准备一个独特的颁奖典礼&#xff0c;组织者在会场的一片矩形区域&#xff08;可看做是平面直角坐标系的第一象限&#xff09;铺上一些矩形地毯&#xff0c;一共有n张地毯&#xff0c;编号从 1 到n。现在将这些地毯按照编号从小到大的顺序平行于坐标轴先后铺设&…

安全专家教你如何利用Uber系统漏洞无限制的免费乘坐?

本文讲的是安全专家教你如何利用Uber系统漏洞无限制的免费乘坐&#xff1f;&#xff0c;近日&#xff0c;根据外媒报道&#xff0c;美国一名安全研究人员发现Uber上存在一处安全漏洞&#xff0c;允许发现这一漏洞的任何用户在全球范围内免费享受Uber乘车服务。据悉&#xff0c;…

java中同步组件_Java并发编程(自定义同步组件)

并发包结构图&#xff1a;编写一个自定义同步组件来加深对同步器的理解业务要求&#xff1a;* 编写一个自定义同步组件来加深对同步器的理解。* 设计一个同步工具&#xff1a;该工具在同一时刻&#xff0c;只允许至多两个线程同时访问&#xff0c;超过两个线程的* 访问将被阻塞…

算法之旅 | 快速排序法

HTML5学堂-码匠&#xff1a;前几期“算法之旅”跟大家分享了冒泡排序法和选择排序法&#xff0c;它们都属于时间复杂度为O(n^2)的“慢”排序。今天跟大家分享多种排序算法里使用较广泛&#xff0c;速度快的排序算法—— 快速排序法 [ 平均时间复杂度为O (n logn) ]。Tips 1&…