暴力dfs求助!!悬赏一个关注
查看原帖
暴力dfs求助!!悬赏一个关注
749460
naixvjiang楼主2023/2/1 15:56
#include<bits/stdc++.h>
#define INF 0x7fffffff
#define MAXN 105
using namespace std;

int size[MAXN],dep[MAXN];
int ans=INF,n;
int val[MAXN];
bool vis[MAXN];
bool _map[MAXN][MAXN];

int dfs(int x)
{
    vis[x]=true;
    for(int i=1;i<=n;i++)
    {
        if(!_map[x][i])continue;
        if(vis[i])continue;
        vis[i]=true;
        dep[i]=dep[x]+1;
        size[x]+=dfs(i);
    }
    return size[x];
}

int main()
{
    scanf("%d",&n);
    for(int i=1;i<=n;i++)
    {
        int x,y,z;
        scanf("%d%d%d",&x,&y,&z);
        val[i]=x;
        if(y)_map[i][y]=_map[y][i]=true;
        if(z)_map[i][z]=_map[z][i]=true;
    }

    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=n;j++)
        vis[j]=false,size[j]=val[j],dep[j]=0;
        dfs(i); int temp=0;
        for(int j=1;j<=n;j++)
        temp+=(dep[j]*size[j]);
        if(temp<ans)ans=temp;
    }

    printf("%d",ans);
    return 0;
}
2023/2/1 15:56
加载中...