zoukankan      html  css  js  c++  java
  • P2921-[USACO08DEC]在农场万圣节Trick or Treat on the Farm

     1 #include <bits/stdc++.h>
     2 #define _for(i,a,b) for(int i = (a);i < b;i ++)
     3 #define _rep(i,a,b) for(int i = (a);i > b;i --)
     4 #define INF 0x3f3f3f3f
     5 #define pb push_back
     6 typedef long long ll;
     7 using namespace std;
     8 inline ll read()
     9 {
    10     ll ans = 0;
    11     char ch = getchar(), last = ' ';
    12     while(!isdigit(ch)) last = ch, ch = getchar();
    13     while(isdigit(ch)) ans = (ans << 1) + (ans << 3) + ch - '0', ch = getchar();
    14     if(last == '-') ans = -ans;
    15     return ans;
    16 }
    17 inline void write(ll x)
    18 {
    19     if(x < 0) x = -x, putchar('-');
    20     if(x >= 10) write(x / 10);
    21     putchar(x % 10 + '0');
    22 }
    23 
    24 int N;
    25 int ms[100003];
    26 int G[100003];
    27 int vis[100003];
    28 int tmp[100003];
    29 int passpoint;
    30 int flag = 0;
    31 int dfs(int nw,int len)
    32 {
    33     if(ms[nw])
    34     {
    35         flag = 1;
    36         return ms[nw]+1;
    37     }
    38     if(vis[nw]==-1)
    39     {
    40         passpoint = nw;
    41         ms[nw] = len-tmp[nw];
    42         return len-tmp[nw];
    43     }
    44     tmp[nw] = len;
    45     vis[nw] = -1;
    46     ms[nw] = dfs(G[nw],len+1);
    47     if(flag)
    48         return ms[nw]+1;
    49     tmp[nw] = 0;
    50     if(passpoint==nw)
    51     {
    52         flag = 1;
    53         return ms[nw]+1;
    54     } 
    55     return ms[nw];
    56 }
    57 int main()
    58 {
    59     N = read();
    60     _for(i,1,N+1)
    61         G[i] = read();
    62     _for(i,1,N+1)
    63         if(!ms[i])
    64         {
    65             flag = 0;
    66             passpoint = -1;
    67             dfs(i,0);
    68         }
    69 
    70     _for(i,1,N+1)
    71     printf("%d
    ",ms[i]);
    72 
    73     return 0;
    74 }
  • 相关阅读:
    CSS基础(二十五)--Background背景之让background-image失效
    CSS基础(二十四)--Background背景之background-image平铺图片堆叠显示
    CSS基础(二十三)--Hover鼠标悬浮变色
    Nginx_安全1
    firewalld防火墙
    shell编程习题
    linux忘记密码
    sed和awk详解
    shell正则表达式
    ssh
  • 原文地址:https://www.cnblogs.com/Asurudo/p/11507876.html
Copyright © 2011-2022 走看看