第二题,每个结点 U 到子树中某结点 V 的最大边权和,有大佬帮我看看吗? import java.util.*; public class Main {     static int [] dparray_weight; //每个结点 U 到子树中某结点 V 的最大边权和     static int [][] tree_edge; //记录边的权值     static int n;  //结点个数     public static void main(String[] args) {         Scanner sc = new Scanner(System.in);         n = Integer.valueOf(sc.nextLine());         tree_edge = new int[n][n];         dparray_weight = new int[n];         init_tree_edge(); //初始化边矩阵,自己到自己为0,其余为int的最大值         //保存输入的边         for(int i=1;i<n;i++){             String[] temp = sc.nextLine().split(" ");             int u = Integer.valueOf(temp[0])-1;             int v=  Integer.valueOf(temp[1])-1;             tree_edge[u][v] = Integer.valueOf(temp[2]);         }         dp_weight(0);         for(int i=0;i<n;i++)             System.out.print(dparray_weight[i]+" ");     }     public static int dp_weight(int index){         if( isleaf(index) ){             dparray_weight[index]=0;             return  dparray_weight[index];         }         for(int j=0;j<n;j++)             if( j!=index && tree_edge[index][j] != Integer.MAX_VALUE ) //index到j有一条边                 dparray_weight[index]=Math.max(dparray_weight[index], dp_weight(j)+ tree_edge[index][j]);         return  dparray_weight[index];     }     public static boolean isleaf(int index){ //结点下标为index的结点是不是叶子结点         boolean flag =true;         for(int j=0;j<n;j++)             if( tree_edge[index][j] != Integer.MAX_VALUE && index!=j){                 flag = false;                 break;             }         return flag;     }     public static void init_tree_edge(){         for(int i=0;i<n;i++)             for (int j=0;j<n;j++)                 if(i==j)                     tree_edge[i][j]=0;                 else                     tree_edge[i][j]=  Integer.MAX_VALUE;     }     public static void print_array(){         for(int i=0;i<n;i++){             for (int j=0;j<n;j++)                 System.out.print(tree_edge[i][j]+" ");             System.out.println();         }     } }
点赞 2

相关推荐

点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-11 12:31
以前小时候我最痛恨出轨、偷情的人,无论男女,为什么会出轨?现在我成了自己最讨厌的人,没想到分享的东西在牛客会被这么多人看,大家的评价都很中肯,我也认同,想过一一回复,但我还是收声了,我想我应该说说这件事,这件事一直压在我心里,是个很大的心结,上面说了人为什么出轨,我大概能明白了。我们大一下半年开始恋爱,开始恋爱,我给出了我铭记3年的承诺,我对她好一辈子,我永远不会背叛,我责任心太重,我觉得跟了我,我就要照顾她一辈子,我们在一起3年我都没有碰过她,她说往东我就往东,她说什么我做什么,她要我干什么,我就干什么!在学校很美好,中途也出过一些小插曲,比如男闺蜜、男闺蜜2号等等等。但我都强迫她改掉了,我...
牛客刘北:两个缺爱的人是没有办法好好在一起的,但世界上哪有什么是非对错?你后悔你们在一起了,但是刚刚在一起的美好也是真的呀,因为其他人的出现,你开始想要了最开始的自己,你的确对不起自己,21岁的你望高物远,你完全可以不谈恋爱,去过你想要的生活,你向往自由,在一起之后,你要想的不是一个人,而是两个人,你不是变心了,就像你说的,你受够了,你不想包容了,冷静几天是你最优的选择,爱人先爱己。
社会教会你的第一课
点赞 评论 收藏
分享
牛客网
牛客网在线编程
牛客网题解
牛客企业服务