关注
//考完试才做出来,自己写了几个例子试了一下是对的,不知道有没有更高效的思路 import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Scanner; import java.util.Set; public class Main { static class Result{ int back; int notback; public Result(int back,int notback){ this.back = back; this.notback = notback; } } static class Pair{ int p1,p2; public boolean contains(int s){ return p1==s||p2==s; } public Pair(int p1,int p2){ this.p1 = p1; this.p2 = p2; } public int another(int p){ if (p==p1){ return p2; }else return p1; } } public static void main(String[] args) { Scanner s = new Scanner(System.in); int n = s.nextInt(); s.nextLine(); Set<Pair> pool = new HashSet<Pair>(); for (int i=0;i<n-1;i++){ String[] temp = s.nextLine().split(" "); pool.add(new Pair(Integer.parseInt(temp[0]),Integer.parseInt(temp[1]))); } //System.out.println(pool.size()); System.out.println(func(1,pool).notback); } private static Result func(int i, Set<Pair> pool) { Set<Pair> connted = connected(pool,i); if (connted.size()==0){ //System.out.println(i+","+"0,0"); return new Result(0,0); } pool.removeAll(connted); int m =0,n=0; List<Result> results = new ArrayList<Result>(); for (Pair p:connted){ int v = p.another(i); Result r = func(v,pool); results.add(r); } int max = 0; for (Result result:results){ m += result.back + 2; if (result.back-result.notback>max){ max = result.back-result.notback; } } n = m -max -1; //System.out.println(i+","+m+","+n); return new Result(m,n); } private static Set<Pair> connected(Set<Pair> pool,int target){ Set<Pair> ret = new HashSet<Pair>(); for (Pair p:pool){ if (p.contains(target)){ ret.add(p); } } return ret; } }
查看原帖
点赞 1
相关推荐
点赞 评论 收藏
分享
点赞 评论 收藏
分享
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 设计人如何选offer #
98384次浏览 689人参与
# 找工作,行业重要还是岗位重要? #
7732次浏览 102人参与
# 五一之后,实习真的很难找吗? #
45681次浏览 324人参与
# 盲审过后你想做什么? #
12680次浏览 113人参与
# 外包能不能当跳板? #
22195次浏览 191人参与
# 领导秒批的请假话术 #
9911次浏览 74人参与
# 考研可以缓解求职焦虑吗 #
21150次浏览 251人参与
# 五一假期,你打算“躺”还是“卷”? #
30393次浏览 435人参与
# 找工作前vs找工作后的心路变化 #
7203次浏览 64人参与
# 面试等了一周没回复,还有戏吗 #
115641次浏览 1074人参与
# 硬件人,你被哪些公司给挂了 #
46706次浏览 722人参与
# 安克创新求职进展汇总 #
32578次浏览 415人参与
# 大疆的机械笔试比去年难吗 #
69649次浏览 603人参与
# 应届生薪资多少才合理? #
3115次浏览 24人参与
# 牛友们的论文几号送审 #
27260次浏览 623人参与
# 写简历别走弯路 #
714466次浏览 7850人参与
# 你喜欢工作还是上学 #
37659次浏览 412人参与
# 如果有时光机,你最想去到哪个年纪? #
43331次浏览 769人参与
# 如果不工作真的会快乐吗 #
101219次浏览 867人参与
# 每人推荐一个小而美的高薪公司 #
72849次浏览 1357人参与