zoukankan      html  css  js  c++  java
  • 森林变树

    #include <bits/stdc++.h>
    using namespace std;
    const int maxn=310;
    int n,dp[maxn][maxn]={0},G[maxn][maxn],m,w[maxn],select[maxn][maxn]={0},b[maxn]={0},c[maxn]={0};//b兄弟,c孩子
    //将森林多叉树转换成二叉树
    int main() {
        cin>>n>>m;
        for(int i=1;i<=n;i++){
            int x;
            cin>>x>>w[i];
            //要求输入按照根往下的顺序输入边,比如1->2 1->3 不会一会正一会负 1->2 3->1;这里输入的是依赖边
            //因为某个点的孩子存那个都行,这样通过c,获得第一个孩子,然后兄弟迭代(右孩子到底)获得所有兄弟
            //第i个点的左子树是孩子,右子树是兄弟,所以b[maxn],c[maxn],就是对应的左右子树数组
            b[i]=c[x];
            c[x]=i;
        }
    //    dfs(0,-1);
        cout<<dp[0][m]<<endl;
        return 0;
    }
  • 相关阅读:
    刻舟求剑,
    录制时间是不准确的,
    HIV T2
    DNA RNA
    洛谷 P1428 小鱼比可爱
    Codevs 1081 线段树练习2
    Codevs 1080 线段树联系
    Tarjan算法
    Codevs 2611 观光旅游
    洛谷 1865 A%B问题
  • 原文地址:https://www.cnblogs.com/MorrowWind/p/13056525.html
Copyright © 2011-2022 走看看