LA3027合作网络

有N个结点

一次 I u v 操作表示把结点u的父结点设为v,距离为|u-v|%1000.输入保证执行指令前u没有父结点

一次E u 操作表示询问u到根结点的距离

O操作表示结束


解题思路:

因为题目只查询结点到根结点的距离,所以每棵树除了根结点不能换之外,其他结点的位置可以任意改变,,这恰好符合并查集的特点,但是需要记录附加信息。如果记录每个结点到根的距离,那么每次I操作都要更新很多结点的信息,时间复杂度难以保证,因此考虑记下每个结点到父结点的距离为d[i],然后在路径压缩时维护这个d数组,即到根结点的距离等于各枝距离之和。因为合并操作指定了父结点和子结点,所以不能使用启发式合并

完整代码如下

#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cstring>
#include <cmath>
using namespace std;
#define MAXSIZE 20010
int par[MAXSIZE];
int depth[MAXSIZE];
int u,v;
void Init()
{
  int i;
  for(i=0;i<MAXSIZE;i++)
  {
    par[i]=i;
	depth[i]=0;
  }

}
void InsertNode()
{
  par[u]=v;
  depth[u]=abs(v-u);
}
int QueryNode()
{
  int ret=0;
  while(par[u]!=u)
  {
	ret+=depth[u];
    u=par[u];
  }
return ret;
 
}
int main()
{
  int T;
  int i;
  cin>>T;
  while(T--)
  {
    int n;

	char cmd[10];
	cin>>n;
	Init();
	for(i=0;i<n;i++)
	{
	  cin>>cmd;
	  if(cmd[0]=='O')
	  {
        break;
	  }
	  else if(cmd[0]=='I')
	  {
		cin>>u>>v;
	    InsertNode();
	  }
	  else if(cmd[0]=='E')
      {
		cin>>u;
	    cout<<QueryNode()<<endl;
	  
	  }
	}
  }
  return 0;
}


内容概要:本文介绍了一个针对电力系统连锁故障传播路径的N-k多阶段双层优化及故障场景筛选模型,该模型基于混合整数线性规划(MILP)方法构建,旨在全面评估电力系统在遭受多重故障时的脆弱性与恢复能力。通过引入故障传播路径的概念,模型能够动态模拟故障在电网中的逐级扩散过程,并结合多阶段优化策略,实现对关键故障场景的有效识别与优先排序。整个框架不仅考虑了初始故障元件的选取,还涵盖了后续因潮流转移引发的级联跳闸行为,从而提升了风险评估的准确性与时效性。该研究已在Matlab平台上完成代码实现,具备良好的可复现性和工程应用价值,适用于提升现代电网的安全防御水平。; 适合人群:电力系统、能源安全及相关领域的科研人员、高校研究生以及从事电网规划与运行管理的工程技术人员。; 使用场景及目标:①用于电力系统安全评估中识别最危险的N-k故障组合;②支撑电网应急预案制定与薄弱环节改造;③作为学术研究中关于级联故障建模与优化求解的教学与验证工具;④服务于智能电网背景下抵御蓄意攻击或极端事件的风险防控决策。; 阅读建议:建议读者结合Matlab代码深入理解模型的数学 formulation 与求解流程,重点关注目标函数设计、约束条件构建及双层优化结构的实现逻辑,同时可通过调整系统参数和故障设定进行仿真对比分析,以掌握不同因素对连锁故障演化的影响规律。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值