求调用链路的数目 和最大的耗时

/*
小明做为新人接收到的第一个任务就是去梳理所有的依赖关系,小明和每个系统的负责人确认了依赖关系,记录下调用对应系统的耗时,用这些数据分析端到端链路的数目和链路上最长的耗时。 
输入: 小明搜集到的系统耗时和依赖列表
 5  4   // 表示有5个系统和 4个依赖关系
 3      // 调用1号系统耗时 3 ms
 2      // 调用2号系统耗时 2 ms
 10     // 调用3号系统耗时 10 ms
 5      // 调用4号系统耗时 5 ms
 7      //  调用5号系统耗时 7 ms
 1 2    //  2号系统依赖1号系统
 1 3    //  3号系统依赖1号系统
 2 5    //  2号系统依赖5号系统
 4 5    //  4号系统依赖5号系统
输出: 调用链路的数目 和最大的耗时, 这里有三条链路1->2->5,1->3, 4->5,最大的耗时是1到3的链路 3+10 = 13,无需考虑环形依赖的存在。 
3 13
*/
#include"stdafx.h"
#include<iostream>
#include<stdio.h>
#include<string>
#include<string.h>
#include<unordered_set>
using namespace std;
struct Node {
    int v;//边的终点标号
    int w;//权值
    Node() {}
    Node(int a, int b) {
        v = a;
        w = b;
    }
};
const int N = 1000;
vector<Node> Adj[N];
vector<int> ans;
int value[N];
int num = 0;//链路数
bool start[N] = { false };
int n, m;//n为系统,m为依赖
int Maxcost=0;//最大花费时间
void DFS(int u,int cost) {//u为当前访问的顶点,cost为花费时间
    ans.push_back(u);
    if (Adj[u].size() == 0)
    {
        for (int j = 0;j < ans.size();j++) {
            cout << ans[j] << " ";
        }
        cout << endl;
        num++;
        if (cost >= Maxcost) {
            Maxcost = cost;
        }
        ans.pop_back();
    }
    else {
        for (int i = 0;i < Adj[u].size();i++) {
                    int v = Adj[u][i].v;
                    int w = Adj[u][i].w;
                    DFS(v, cost+w);
                    
        }ans.pop_back();
    }
    
    
}
void DFSTrave(int n) {
    for (int u = 1;u <= n;u++) {
        if (start[u-1] == false)
            DFS(u, value[u]);
    }
}
int main() {
    Node node ;
    int u1, u2;

    cin >> n >> m;//n个顶点,m个依赖关系
    for (int i = 1;i <= n;i++) {
            cin >> value[i];
    }
    for (int i = 0;i < m;i++) {
        cin >> u1>>u2;
        start[u2 - 1] = true;  //非头结点为true
        node=Node(u2, value[u2]);
        Adj[u1].push_back(node);
    }
    DFSTrave(n);
    cout <<num<<"  "<< Maxcost;
    return 0;
}

### 如何在 Windows 系统中测试网速 #### 使用图形化工具测量网络速度 可以通过第三方软件实现直观的网速监控功能。例如,在某些系统优化工具中,默认情况下打开该程序即可在桌面上看到悬浮显示的网速图标[^2]。如果没有自动显示,则可以按照软件内的设置选项手动开启此功能。 #### 命令行工具 iperf 的使用方法 对于更专业的网络性能测试需,可以采用命令行工具 `iperf` 来完成详细的带宽分析。以下是具体的操作流程: 1. **测试环境搭建** 需要在目标网络的不同节点分别部署 iperf 服务端客户端设备[^3]。通常可以在本地计算机上启动服务端模式,而在另一台远程机器上执行客户端请操作。 2. **运行 iperf 测试** 启动服务端后,通过指定参数调用客户端发起连接并传输数据包。这一步骤能够帮助我们获取到实际可用的最大吞吐量数值。 下面是一个简单的例子展示如何配置基本的单向 TCP 流量检测过程: ```bash # 在服务器端输入以下命令等待接收来自其他主机的数据流 iperf -s # 客户端则需指向上述已知地址发送特定大小的信息块用于计算速率 iperf -c <server_ip> ``` 3. **多线程并发处理能力验证** 如果想进一步考察复杂条件下系统的响应表现,还可以增加额外选项支持同时建立多个独立会话来进行压力检验。 ```bash iperf -c <server_ip> -P 10 ``` 此处 `-P` 参数后的值代表期望创建的子进程数目,从而达到模拟真实世界里众多用户共同访问资源的效果。 4. **结果解读与总结** 执行完毕之后,双方终端都会打印出相应的统计信息表格,其中包括但不限于总耗时、平均下载/上传速度等关键指标项。依据这些量化描述便能有效判断当前链路质量状况以及是否存在瓶颈现象发生等问题所在之处。 ```python import subprocess def run_iperf_test(server_ip): try: result = subprocess.run(['iperf', '-c', server_ip], stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True) return result.stdout except Exception as e: return str(e) if __name__ == "__main__": test_result = run_iperf_test('192.168.x.y') # 替换为实际IP地址 print(test_result) ``` 以上脚本提供了一个自动化的方式去调用外部可执行文件接口,并将最终返回的内容呈现给使用者查看方便后续决策制定工作开展下去。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值