P2921 [USACO08DEC]在农场万圣节Trick or Treat on the Farm
对于一个牛,它存在两种状态:1.处于联通分量 2.不处于联通分量。对于处于联通分量的牛,求出联通分量的大小;对于不处于联通分量的牛,求出其距离联通分量的路程+联通分量大小。
不同的联通分量,染上不同的颜色,可以计算各个联通分量的大小。
#include<bits/stdc++.h>
using namespace std; int vis[];
int low[];
int Loop[],color[],dfn[],head[],ans[],st[], Next[];
int pos;
int k=;
int col;
int top; struct node
{
int v,next;
}edge[]; 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]!=)
{
ans[root] = ans[x]+step;
return;
}
else
Find(root,Next[x],step+);
} void Tarjan(int u)
{
dfn[u] = low[u] = ++pos;
st[++top] = u;
vis[u] = ;
for(int i=head[u];i!=-;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] = ;
color[x] = col;
}while(x!=u);
}
} int main()
{
memset(head,-,sizeof(head));
int n,v;
scanf("%d",&n);
for(int i=;i<=n;i++)
{
scanf("%d",&v);
Next[i] = v;
Add(i,v);
if(v==i)
ans[i] = ;
}
for(int i=;i<=n;i++)
{
if(!dfn[i])
{
Tarjan(i);
}
}
for(int i=;i<=n;i++)
{
Loop[color[i]]++;
}
for(int i=;i<=n;i++)
{
if(Loop[color[i]]!=)
ans[i] = Loop[color[i]];
}
for(int i=;i<=n;i++)
{
if(ans[i]==)
Find(i,Next[i],);
}
for(int i=;i<=n;i++)
{
printf("%d\n",ans[i]);
}
return ;
}
P2921 [USACO08DEC]在农场万圣节Trick or Treat on the Farm的更多相关文章
- LGOJ P2921 [USACO08DEC]在农场万圣节Trick or Treat on the Farm
今天我来给大家带来一片蒟蒻题解 ~~真香 LGOJ P2921 [USACO08DEC]在农场万圣节Trick or Treat on the Farm 题目描述 每年,在威斯康星州,奶牛们都会穿上 ...
- P2921 [USACO08DEC]在农场万圣节Trick or Treat on the Farm(Tarjan+记忆化)
P2921 [USACO08DEC]在农场万圣节Trick or Treat on the Farm 题意翻译 题目描述 每年,在威斯康星州,奶牛们都会穿上衣服,收集农夫约翰在N(1<=N< ...
- 洛谷——P2921 [USACO08DEC]在农场万圣节Trick or Treat on the Farm
P2921 [USACO08DEC]在农场万圣节Trick or Treat on the Farm 题意翻译 题目描述 每年,在威斯康星州,奶牛们都会穿上衣服,收集农夫约翰在N(1<=N< ...
- C++ 洛谷 P2921 [USACO08DEC]在农场万圣节Trick or Treat on the Farm 题解
P2921 [USACO08DEC]在农场万圣节Trick or Treat on the Farm 分析: 这棵树上有且仅有一个环 两种情况: 1.讨论一个点在环上,如果在则答案与它指向点相同, 2 ...
- P2921 [USACO08DEC]在农场万圣节Trick or Treat on the Farm 记忆化搜索dfs
题目描述 每年,在威斯康星州,奶牛们都会穿上衣服,收集农夫约翰在N(1<=N<=100,000)个牛棚隔间中留下的糖果,以此来庆祝美国秋天的万圣节. 由于牛棚不太大,FJ通过指定奶牛必须遵 ...
- 洛谷 P2921 [USACO08DEC]在农场万圣节Trick or Treat on the Farm
题目描述 每年,在威斯康星州,奶牛们都会穿上衣服,收集农夫约翰在N(1<=N<=100,000)个牛棚隔间中留下的糖果,以此来庆祝美国秋天的万圣节. 由于牛棚不太大,FJ通过指定奶牛必须遵 ...
- [P2921][USACO08DEC]在农场万圣节Trick or Treat on the Farm (记忆化搜索/DP?,Tarjan?)
第一看还以为是水题 随便打了一个bfs只有40分…… 然后开始颓废 #include<bits/stdc++.h> #define N 100005 using namespace std ...
- [洛谷P2921][USACO08DEC]在农场万圣节Trick or Treat on the Farm
题目大意:给你一张有向图,每个点最多一条出边,问从每个开始,走多少步会到一个已经过的点 题解:$tarjan$缩点,然后建反图$DP$ 卡点:无 C++ Code: #include <cstd ...
- LUOGU P2921 [USACO08DEC]在农场万圣节Trick or Treat on the Farm
传送门 解题思路 记忆化搜索,如果搜到环,就将环的大小处理出来. 代码 #include<iostream> #include<cstdio> #include<cstr ...
随机推荐
- CSS问题
当标签之间有缝隙 两个a标签之间消除缝隙 可在div设置 font-size:0 ul下的li去掉小圆点:设置 ul list-style:none <div> <a> & ...
- shell 编程初级
shell编程的简单代码 一些基础代码 直接上代码 #!/bin/bash myUrl="gggggggg" # 只读变量设置 # readonly myUrl echo &quo ...
- 如何在FineUIMvc(ASP.NET MVC)中显示复杂的表格列数据(列表和对象)?
起源 最初,这个问题是知识星球内的一个网友提出的,如何在FineUIMvc中展现复杂的列数据? 在FineUIPro中,我们都知道有一个 TemplateField 模板列可以使用,我们只需要在后台定 ...
- TypeError: argument 1 must be an integer, not _subprocess_handle/OSError: [WinError 87]
Error Msg: Traceback (most recent call last): File "c:\python27\lib\site-packages\celery\worker ...
- 【C语言】位运算
编写一个函数getbits,从一个16位的单元中取出某几位(即该几位保留原值,其余位0).函数调用形式为getbits(value,n1,2).----简单题目遇到想不到的问题 c语言位运算经典问题: ...
- path node
process.cwd() 当前Node.js进程执行时的工作目录 __dirname 当前模块的目录名 const path = require('path'); console.log(__dir ...
- html5+ 原生标题栏添加input 输入框
titleNView: { backgroundColor: "#f7f7f7", // 导航栏背景色 titleText: "", // 导航栏标题 titl ...
- ArrayList如何扩容?
1.调用ArrayList的参构造方法,此时集合内部是一个空数组 transient Object[] elementData; private static final Object[] DEFAU ...
- hdu-1054(二分图最大匹配)
题意:给你一个图,图里有墙壁和空地,空地可以放置一台机关枪,机关枪可以朝着四个方向发射,子弹不能穿透墙壁,但是射程无限,机关枪会被损坏如果被另一台机关枪的子弹打到,问你最多能放置多少台机关枪: 解题思 ...
- magento 2.2.3 -/.gitignore -/.htaccess 分享
/.htaccess ############################################ ## overrides deployment configuration mode v ...