【编程题目 |200分】最长广播效应 【2021 H2, 2022 Q1,Q2 考试题】


时间限制:C/C++ 1秒,其他语言 2秒

空间限制:C/C++262144K,其他语言524288K

64bit IO Format:%lld


本题可使用本地IDE编码,不能使用本地已有代码,无跳出限制,

编码后请点击”保存并调试“按钮进行代码提交。


题目描述

  • 某通信网络中有N个网络结点,用1到N进行标识。
  • 网络中的结点互联互通,且结点之间的消息传递有时延,相连结点的时延均为一个时间单位。
  • 现给定网络结点的连接关系link[i]={u,v},其中u和v表示网络结点。
  • 当指定一个结点向其他结点进行广播,所有被广播结点收到消息后都会在原路径上回复一条响应消息,请计算发送结点至少需要等待几个时间单位才能收到所有被广播结点的响应消息。

注:

  1. N的取值范围为[1,100];
  2. 连接关系link的长度不超过3000,且1 <= u,v <= N;
  3. 网络中任意结点间均是可达的;

输入描述:

  • 输入的第一行为两个正整数,分别表示网络结点的个数N,以及时延列表的长度T;
  • 接下来的T行输入,表示结点间的连接关系列表;
  • 最后一行的输入为一个正整数,表示指定的广播结点序号;

输出描述:

  • 输出一个整数,表示发送结点接收到所有响应消息至少需要等待的时长。

代码实现


C++解法一


#include<bits/stdc++.h>

using namespace std;

class Solution {
public:
    int networkDelayTime(vector<vector<int>> &times, int N, int K)

剩余50%内容,订阅会员后查看


隐藏内容

此处内容需要权限查看

  • 普通用户特权:11金币
  • 会员用户特权:免费
  • 永久会员用户特权:免费推荐
会员免费查看

C++解法二


#include <bits/stdc++.h> 

using namespace std;

剩余50%内容,订阅会员后查看


隐藏内容

此处内容需要权限查看

  • 普通用户特权:11金币
  • 会员用户特权:免费
  • 永久会员用户特权:免费推荐
会员免费查看

JAVA解法一


import java.util.Scanner;

public class Main {
    private static int[][] arr;
    private static int[] dis;
    private static boolean[] mark;
    private static int from;

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String[] nms = sc.nextLine().split(" ");
        int count = Integer.parseInt(nms[0]);
        int line = Integer.parseInt(nms[1]);

剩余50%内容,订阅会员后查看


隐藏内容

此处内容需要权限查看

  • 普通用户特权:11金币
  • 会员用户特权:免费
  • 永久会员用户特权:免费推荐
会员免费查看


JAVA解法二


import java.util.*;

public class Main {

    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);

        int m = sc.nextInt();
        int n = sc.nextInt();

        int[][] ints = new int[m][m];

剩余50%内容,订阅会员后查看


隐藏内容

此处内容需要权限查看

  • 普通用户特权:11金币
  • 会员用户特权:免费
  • 永久会员用户特权:免费推荐
会员免费查看


JAVA解法三


import java.util.ArrayList;
import java.util.PriorityQueue;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt(), m = in.nextInt();

剩余50%内容,订阅会员后查看


隐藏内容

此处内容需要权限查看

  • 普通用户特权:11金币
  • 会员用户特权:免费
  • 永久会员用户特权:免费推荐
会员免费查看