洛谷 P2921 [USACO08DEC]在农场万圣节Trick or Treat on the Farm(搜索_图的遍历)

11人阅读 评论(0) 收藏 举报
分类:

传送门


似乎有点强连通的意思???
直接搜吧,搜的时候记录第一次访问当前点的时间
如果一个点后继牛棚是自己,则形成自环,答案为1
如果一个点在环中且不是自环,则答案为环的大小=第二次搜到当前点的时间-第一次搜到当前点的时间+1,用当前点的答案去更新环内其他点的答案
如果一个点不在环中,则当前点往前搜一定会搜到一个环,递归时更新答案,为当前点的后继牛棚的答案加一。

Code:

#include<cstdio>
#include<cstdlib>
#include<cstring>

int n,m,t;
int a[100010],f[100010],q[100010];

void dfs(int x)
{
    if(x==a[x])
    {
        f[x]=1;
        return;
    }
    if(f[a[x]])
    {
        f[x]=f[a[x]]+1;
        return;
    }
    else
    {
        q[x]=++t;
        if(q[a[x]])
        {
            f[x]=f[a[x]]=t-q[a[x]]+1;
            m=t-q[a[x]]+1;
            return;
        }
        dfs(a[x]);
        if(f[x]==0 && m!=0) f[x]=m;
        else
        {
            m=0;
            if(f[x]==0) f[x]=f[a[x]]+1;
        }
    }
}

int main()
{
    scanf("%d",&n);
    for(int i=1;i<=n;i++) scanf("%d",&a[i]);
    memset(q,0,sizeof(q));
    memset(f,0,sizeof(f));
    for(int i=1;i<=n;i++)
    {
        if(!f[i]) t=0,dfs(i);
        printf("%d\n",f[i]);
    }
}
查看评论

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

题目描述 Every year in Wisconsin the cows celebrate the USA autumn holiday of Halloween by dressing u...
  • yangrui2002
  • yangrui2002
  • 2017-12-18 16:38:44
  • 88

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

题目描述 Every year in Wisconsin the cows celebrate the USA autumn holiday of Halloween by dressing...
  • Eirlys_North
  • Eirlys_North
  • 2016-11-01 07:06:13
  • 441

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

题目大意:有n个点,每个点会有1条连出去的边(注意,连向这个点的边数不一定是1),有n头牛,第i头牛从i点开始出发,无脑往前沿着边走,问每头牛能经过多少个不同的点(起点也要算!!)。细细品味一下这个题...
  • a_forever_dream
  • a_forever_dream
  • 2018-03-28 13:04:03
  • 16

【bzoj1589】[Usaco2008 Dec]Trick or Treat on the Farm 采集糖果

Description每年万圣节,威斯康星的奶牛们都要打扮一番,出门在农场的N(1≤N≤100000)个牛棚里转悠,来采集糖果.她们每走到一个未曾经过的牛棚,就会采集这个棚里的1颗糖果. 农场不大,所...
  • w_yqts
  • w_yqts
  • 2017-09-14 20:11:49
  • 95

PKU Trick or Treat

题目链接:http://poj.org/problem?id=3873题解:给你n点的坐标,让你求出这些点到x轴上一点的最大值的最小值。让你输出这个点在x轴上的x的坐标,以及离这个点最远的点的距离。 ...
  • silver_bone
  • silver_bone
  • 2017-02-20 15:24:33
  • 123

【BZOJ1589】[Usaco2008 Dec]Trick or Treat on the Farm 采集糖果【SCC】【基环外向树】【DP】【记忆化搜索】

http://www.lydsy.com/JudgeOnline/problem.php?id=1589 首先这是一个基环外向树,先tarjan缩点变成DAG,然后跑dp就行了。 记忆...
  • BraketBN
  • BraketBN
  • 2016-03-18 08:49:08
  • 539

洛谷P2921 [USACO08DEC]在农场万圣节Trick or Treat on the Farm(tarjan缩点+记忆化)

先上链接:点击打开链接昨天上课偶然发现洛谷上也有题没有过,寒假有限几天写过题的杰作,当时只知道tarjan很厉害,什么求强联通分量怎么做完全不造。当然离上一次看强联通、点连通什么的过了快两周了,其实是...
  • qq_37439324
  • qq_37439324
  • 2018-03-23 20:00:51
  • 11

洛谷P2925 [USACO08DEC]干草出售Hay For Sale

题目描述 Farmer John suffered a terrible loss when giant Australian cockroaches ate the entirety of his...
  • yangrui2002
  • yangrui2002
  • 2017-11-09 21:08:55
  • 69

【洛谷P2907】 【USACO08OPEN】农场周围的道路 水模拟分治

P2907 [USACO08OPEN]农场周围的道路Roads Around The Farm 题目描述 Farmer John's cows have taken an inte...
  • u013512086
  • u013512086
  • 2017-02-10 00:26:48
  • 149

P2922 [USACO08DEC]秘密消息Secret Message

P2922 [USACO08DEC]秘密消息Secret Message 题目描述 Bessie is leading the cows in an attempt to escape! To d...
  • WhiStLenA
  • WhiStLenA
  • 2017-10-15 13:55:41
  • 73
    个人资料
    持之以恒
    等级:
    访问量: 725
    积分: 374
    排名: 20万+
    文章存档
    最新评论