在农场万圣节
Posted karryw
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在农场万圣节相关的知识,希望对你有一定的参考价值。
题目链接
抄的题解的链接
大体理解了思路,经常复习复习,不要忘了。
因为每个点的出度只有1,那么每个点向下走的路径是唯一的。
题解里说的两种情况
代码:
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
const int N = 200005;
int n,net[N],color[N],sucdfn[N],dfn[N],minc[N];
int main()
scanf("%d",&n);
for(int i=1;i<=n;i++)
scanf("%d",&net[i]);
for(int cow=1;cow<=n;++cow)
int cnt=0;
for(int i=cow;;i=net[i])
if(!color[i])
color[i]=cow;
dfn[i]=cnt;
else if(color[i]==cow)
minc[cow]=cnt-dfn[i];
sucdfn[cow]=dfn[i];
printf("%d\n",cnt);
break;
else
minc[cow]=minc[color[i]];
sucdfn[cow]=cnt+max(sucdfn[color[i]]-dfn[i],0);
printf("%d\n",sucdfn[cow]+minc[cow]);
break;
++cnt;
以上是关于在农场万圣节的主要内容,如果未能解决你的问题,请参考以下文章
[USACO08DEC]在农场万圣节Trick or Treat on the Farm
P2921 [USACO08DEC]在农场万圣节Trick or Treat on the Farm(Tarjan+记忆化)
P2921 在农场万圣节(非递归的类似于记忆化搜索的巧妙方法||记忆化搜索||tarjan)
[USACO08DEC]在农场万圣节Trick or Treat on the Farm