1160. Network

博客提及 1160. Network,包含输入、输出及示例内容,原文转载自 https://www.cnblogs.com/sdau--codeants/p/3264142.html 。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1160. Network

Time limit: 1.0 second Memory limit: 64 MB
Andrew is working as system administrator and is planning to establish a new network in his company. There will be N hubs in the company, they can be connected to each other using cables. Since each worker of the company must have access to the whole network, each hub must be accessible by cables from any other hub (with possibly some intermediate hubs).
Since cables of different types are available and shorter ones are cheaper, it is necessary to make such a plan of hub connection, that the maximum length of a single cable is minimal. There is another problem - not each hub can be connected to any other one because of compatibility problems and building geometry limitations. Of course, Andrew will provide you all necessary information about possible hub connections.
You are to help Andrew to find the way to connect hubs so that all above conditions are satisfied.

Input

The first line contains two integer: N - the number of hubs in the network (2 ≤ N ≤ 1000) and M — the number of possible hub connections (1 ≤ M ≤ 15000). All hubs are numbered from 1 to N. The following M lines contain information about possible connections - the numbers of two hubs, which can be connected and the cable length required to connect them. Length is a positive integer number that does not exceed 10 6. There will be no more than one way to connect two hubs. A hub cannot be connected to itself. There will always be at least one way to connect all hubs.

Output

Output first the maximum length of a single cable in your hub connection plan (the value you should minimize). Then output your plan: first output P - the number of cables used, then output P pairs of integer numbers - numbers of hubs connected by the corresponding cable. Separate numbers by spaces and/or line breaks.

Sample

inputoutput
4 6
1 2 1
1 3 1
1 4 2
2 3 1
3 4 1
2 4 1
1
4
1 2
1 3
2 3
3 4
Problem Author: Andrew Stankevich Problem Source: ACM ICPC 2001. Northeastern European Region, Northern Subregion
***************************************************************************************
最小生成树(好像样例错啦!!!!!!!!!!!!!)krustra
***************************************************************************************
  1 #include<iostream>
  2 #include<string>
  3 #include<cstring>
  4 #include<cmath>
  5 #include<queue>
  6 #include<stack>
  7 #include<algorithm>
  8 using namespace std;
  9 struct  edge
 10 {
 11     int s,t;
 12     bool  bo;
 13     int w;
 14     edge()
 15     {
 16         bo=false;
 17     }
 18 }ed[15006];
 19 int fa[1003];
 20 int n,m,s,t,I;
 21 int ans[1003];
 22 int k;
 23 int sum;
 24 void add(int x,int y,int w)
 25 {
 26     ed[I].s=x;
 27     ed[I].t=y;
 28     ed[I].w=w;
 29     ++I;
 30 }
 31 
 32 bool  cmp(edge a,edge b)
 33   {
 34       if(a.w<b.w)
 35        return true;
 36       if(a.w>b.w)
 37        return  false;
 38       if(a.w==b.w)
 39        {
 40           if(a.s<b.s)
 41            return false;
 42           if(a.s>b.s)
 43            return true;
 44           if(a.t<b.t)
 45             return  true;
 46            return false;
 47        }
 48   }
 49   void  make_set()
 50    {
 51        for(int it=1;it<=n;it++)
 52         fa[it]=it;
 53    }
 54   int find(int x)
 55    {
 56        if(fa[x]!=x)
 57         return fa[x]=find(fa[x]);
 58        return x;
 59    }
 60    bool Uon(int x,int y)
 61     {
 62         x=find(x);
 63         y=find(y);
 64         if(x==y)
 65          return true;
 66         else
 67           {
 68               fa[x]=y;
 69           }
 70         return  false;
 71     }
 72 
 73   void kru()
 74    {
 75        int i,j;
 76        sort(ed+1,ed+m+1,cmp);
 77        for(i=1;i<=m;i++)
 78         {
 79             if(k==n-1)break;
 80             if(!Uon(ed[i].s,ed[i].t))
 81               {
 82                   ed[i].bo=true;
 83                   sum=ed[i].w;
 84                   ++k;
 85                   ans[k]=i;
 86               }
 87              else
 88                continue;
 89         }
 90 
 91    }
 92    int main()
 93    {
 94        int i,j;
 95        k=0;sum=0;
 96        cin>>n>>m;
 97        int h1,h2,we;
 98        make_set();
 99        I=1;
100        for(i=1;i<=m;i++)
101         {
102             cin>>h1>>h2>>we;
103             add(h1,h2,we);
104         }
105         kru();
106         cout<<sum<<endl<<k<<endl;
107         for(i=1;i<=k;i++)
108          {
109             cout<<ed[ans[i]].s<<' '<<ed[ans[i]].t<<endl;
110 
111          }
112          return 0;
113    }
View Code

 

转载于:https://www.cnblogs.com/sdau--codeants/p/3264142.html

用c++解决1160. Network Time limit: 1.0 second Memory limit: 64 MB Andrew is working as system administrator and is planning to establish a new network in his company. There will be N hubs in the company, they can be connected to each other using cables. Since each worker of the company must have access to the whole network, each hub must be accessible by cables from any other hub (with possibly some intermediate hubs). Since cables of different types are available and shorter ones are cheaper, it is necessary to make such a plan of hub connection, that the maximum length of a single cable is minimal. There is another problem - not each hub can be connected to any other one because of compatibility problems and building geometry limitations. Of course, Andrew will provide you all necessary information about possible hub connections. You are to help Andrew to find the way to connect hubs so that all above conditions are satisfied. Input The first line contains two integer: N - the number of hubs in the network (2 ≤ N ≤ 1000) and M — the number of possible hub connections (1 ≤ M ≤ 15000). All hubs are numbered from 1 to N. The following M lines contain information about possible connections - the numbers of two hubs, which can be connected and the cable length required to connect them. Length is a positive integer number that does not exceed 106. There will be no more than one way to connect two hubs. A hub cannot be connected to itself. There will always be at least one way to connect all hubs. Output Output first the maximum length of a single cable in your hub connection plan (the value you should minimize). Then output your plan: first output P - the number of cables used, then output P pairs of integer numbers - numbers of hubs connected by the corresponding cable. Separate numbers by spaces and/or line breaks.
05-28
变分模态分解(Variational Mode Decomposition, VMD)是一种强大的非线性、无参数信号处理技术,专门用于复杂非平稳信号的分析与分解。它由Eckart Dietz和Herbert Krim于2011年提出,主要针对传统傅立叶变换在处理非平稳信号时的不足。VMD的核心思想是将复杂信号分解为一系列模态函数(即固有模态函数,IMFs),每个IMF具有独特的频率成分和局部特性。这一过程与小波分析或经验模态分解(EMD)类似,但VMD通过变分优化框架显著提升了分解的稳定性和准确性。 在MATLAB环境中实现VMD,可以帮助我们更好地理解和应用这一技术。其核心算法主要包括以下步骤:首先进行初始化,设定模态数并为每个模态分配初始频率估计;接着采用交替最小二乘法,通过交替最小化残差平方和以及模态频率的离散时间傅立叶变换(DTFT)约束,更新每个模态函数和中心频率;最后通过迭代优化,在每次迭代中优化所有IMF的幅度和相位,直至满足停止条件(如达到预设迭代次数或残差平方和小于阈值)。 MATLAB中的VMD实现通常包括以下部分:数据预处理,如对原始信号进行归一化或去除直流偏置,以简化后续处理;定义VMD结构,设置模态数、迭代次数和约束参数等;VMD算法主体,包含初始化、交替最小二乘法和迭代优化过程;以及后处理,对分解结果进行评估和可视化,例如计算每个模态的频谱特性,绘制IMF的时频分布图。如果提供了一个包含VMD算法的压缩包文件,其中的“VMD”可能是MATLAB代码文件或完整的项目文件夹,可能包含主程序、函数库、示例数据和结果可视化脚本。通过运行这些代码,可以直观地看到VMD如何将复杂信号分解为独立模态,并理解每个模态的物理意义。 VMD在多个领域具有广泛的应用,包括信号处理(如声学、振动、生物医学信号分析)、图像处理(如图像去噪、特征提取)、金融时间序列分析(识
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值