zoukankan      html  css  js  c++  java
  • cf edu round49(div2) D. Mouse Hunt

    这个代码很巧妙的解决了判环问题,利用每个出度只有1的特殊条件,cnt是一个类似时间戳的东西

    ,来判断当前节点开始的环是否被访问过,如果没被访问才能加到答案中。

    #include<bits/stdc++.h>
    using namespace std;
    int n;
    int c[200010];
    int a[200010];
    int vis[200010];
    int ans;
    int main()
    {
        int n;
        scanf("%d",&n);
        for(int i=1;i<=n;i++)
           scanf("%d",&c[i]);
        for(int i=1;i<=n;i++)
           scanf("%d",&a[i]);
        int cnt=0;
        for(int i=1;i<=n;i++)
        {
            if(!vis[i])
            {
                cnt++;
                int x=i;
                vis[x]=cnt;
                int rt=a[x];
                while(!vis[rt])
                {
                    vis[rt]=cnt;
                    rt=a[rt];    
                }
                if(vis[rt]!=cnt)
                  continue;
                x=a[rt];
                int now=c[rt];
                while(rt!=x)
                {
                    now=min(c[x],now);
                    x=a[x];
                }
                ans+=now;
            }    
        }
        printf("%d
    ",ans);
    }
  • 相关阅读:
    SpringSecurity开发
    SpringBoot 集成Spring Security
    Hexo
    gitbook使用
    Maze
    Party
    A. DZY Loves Chessboard
    1042B. Vitamins
    Petr and a Combination Lock
    433B.Kuriyama Mirai's Stones
  • 原文地址:https://www.cnblogs.com/lishengkangshidatiancai/p/10268567.html
Copyright © 2011-2022 走看看