Codeforces Round 49 (Rated for Div. 2)D Mouse Hunt(dfs,思维,WA)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_37360631/article/details/81838028

这里写图片描述

WA。。后面补

#include<iostream>
#include<cstdio>
using namespace std;
const int max_n=200005;
const int inf=0x3f3f3f3f;
int n;
int c[max_n];
int a[max_n];
int in[max_n];
bool visit[max_n];
int ans=0;
int res;
void dfs(int u)
{
    visit[u]=1;
    --in[a[u]];
    if(!in[a[u]])dfs(a[u]);
}
void dfs2(int u)
{
    if(visit[u])
    {
        ans+=res;
        return;
    }
    visit[u]=true;
    res=min(res,c[u]);
    dfs2(a[u]);
}
int main()
{
    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),in[a[i]]++;
    for(int i=1;i<=n;i++)
    {
        if(!in[i])dfs(i);
    }
    for(int i=1;i<=n;i++)
    {
        if(!visit[i])res=inf,dfs2(i);
    }
    printf("%d\n",ans);
    return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_37360631/article/details/81838028
今日推荐