码迷,mamicode.com
首页 > 其他好文 > 详细

在农场万圣节

时间:2019-08-22 21:46:20      阅读:84      评论:0      收藏:0      [点我收藏+]

标签:stream   des   情况   for   load   tar   plane   ==   upload   

题目链接

抄的题解的链接
大体理解了思路,经常复习复习,不要忘了。

因为每个点的出度只有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;
        }
    }
}

在农场万圣节

标签:stream   des   情况   for   load   tar   plane   ==   upload   

原文地址:https://www.cnblogs.com/karryW/p/11396870.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!