8道2021年美团C++/Java最新面试真题,你能做对几道?(含答案)

       整理了8道美团笔试真题,来试试自己水平有多厉害吧。

       1、小美是美团的一名鲜花快递员,鲜花是一种保质期非常短的商品,所以需要尽快送到客户手中,公司对于骑手的一个要求就是要规划送花的线路,使得骑手送完所有订单走的路程尽可能少。(骑手开始派送时带走了所有需要派送的花,不必每单后返回花店,路程结算是从花店出发,到送完最后一名客户为止,不计算从最后一名客户家回到花店的时间)。

       公司对于骑手的绩效评价是取决于两个指标,一是从花店到所有客户地址的距离之和,另一个是骑手实际走的路程。

       设花店始终位于1号位置,客户共有n-1个,其编号为2~n。为了简化问题,我们约束这n个位置构成的是一棵树,即只有n-1条边在其中互相连接,且保证n个点彼此连通。
       输入描述:
       输出第一行包含一个正整数n,即花店和客户的总数。(1<=n<=30000)。
       接下来有n-1行,每行有三个整数u,v,w,表示在u和v之间存在一条距离为w的道路。(1<=w<=1000)
       输出描述:
       输出包含两个整数,中间用空格隔开,分别表示花店到所有客户地址的距离之和和骑手实际走的路程。

import java.util.*;
public class Main{
    public static void main(String[] args){
        Scanner s=  new Scanner(System.in);
            
        int n=s.nextInt();
        int alldis=0;
        ArrayList<Edge>[] graph= new ArrayList[n+1];
        for (int i=1;i<n+1;i++){
            graph[i]=new ArrayList<Edge>();
        }
        for(int i=0;i<n-1;i++){
            int num = s.nextInt();
            int key = s.nextInt();
            int value = s.nextInt();
            alldis+=value;
            graph[num].add(new Edge(key,value));

        }
        boolean[] hasVis = new boolean[n+1];
        int[] allDis = new int[n + 1];
        allDis[1]=0;
        LinkedList<Node> queue = new LinkedList<>();
        queue.offer(new Node(1,0,true));
        while(!queue.isEmpty()){
            Node tempNode = queue.poll();
            int num=tempNode.num;
            for (Edge edge:graph[num]){
               int dis= tempNode.dis+edge.value;
               if (!hasVis[edge.pointTo]){
               queue.offer(new Node(edge.pointTo,dis,true));
               allDis[edge.pointTo]=dis;
               hasVis[edge.pointTo]=true;}
            }
        }
int max=0;
        int sum=0;
 for (int i&#
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值