关注
//考完试才做出来,自己写了几个例子试了一下是对的,不知道有没有更高效的思路 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
相关推荐
点赞 评论 收藏
分享
10-08 00:57
门头沟学院 Java 点赞 评论 收藏
分享
牛客热帖
正在热议
# 25届秋招总结 #
298833次浏览 2637人参与
# 如果不工作真的会快乐吗 #
58832次浏览 514人参与
# 北方华创开奖 #
26403次浏览 285人参与
# 地方国企笔面经互助 #
3723次浏览 9人参与
# 美团求职进展汇总 #
1326625次浏览 12443人参与
# 选完offer后,你后悔学本专业吗 #
19615次浏览 143人参与
# 百度开奖 #
161054次浏览 966人参与
# 正在实习的你,几点下班 #
51563次浏览 385人参与
# 国央企薪资爆料 #
7939次浏览 56人参与
# 如何一边实习一边秋招 #
991790次浏览 12636人参与
# 提前批简历挂麻了怎么办 #
146338次浏览 1948人参与
# 学历or实习经历,哪个更重要 #
50825次浏览 401人参与
# 海康威视求职进展汇总 #
398656次浏览 3405人参与
# 米哈游求职进展汇总 #
175780次浏览 1458人参与
# 投递实习岗位前的准备 #
1178868次浏览 18390人参与
# 面试体验感最好的是哪家? #
85014次浏览 845人参与
# 实习生应该准时下班吗 #
167352次浏览 1159人参与
# 得物求职进展汇总 #
66148次浏览 681人参与
# 求职遇到的搞笑事件 #
70673次浏览 576人参与
# 网申一定要掌握的小技巧 #
5307次浏览 53人参与
# 0offer是寒冬太冷还是我太菜 #
897808次浏览 8007人参与
# 腾讯求职进展汇总 #
195682次浏览 1641人参与