链式前向星存图模板

本文详细介绍了如何使用C++实现邻接表来存储图数据结构,包括节点和边的定义,以及如何通过邻接表进行图的初始化和边的添加。通过具体的代码示例,展示了邻接表在图算法中的应用。

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

#include <bits/stdc++.h>
#define int long long
const int inf=0x3f3f3f3f;
const int maxn=1e5+10;
typedef struct edge
{
    int to,next;//to为终点编号,next是同起点的上一条边的编号
}edg;
edg e[maxn];//e[]是代表边的结构体,to和next分别为该边的终点的编号和与该边同起点的上一条边的编号
int n,m,s,t,head[maxn],sum;//head[i]表示以i为起点的当前边的编号
using namespace std;

void init()
{
    N=n;
    memset(head,-1,sizeof(head));//head[]初始化:把以每个编号为起点的第一条边的上一条边的编号记为的编号-1(因为没有)
}
/*加边函数表示方法1*/
/*void AddEdge(int u,int v)//加边函数
{
    e[sum]=(edg){v,head[u]};//(edge)表示强制转化为edge(结构体)类型,表示将后面的v,c,head[u]这三个变量强制转化为edge类型后赋值给e[sum]
    head[u]=sum++;//以u为起点的当前边的编号更新为当前边的编号sum
}*/

/*加边函数表示方法2*/
void AddEdge(int u,int v)
{//建立正边:
    e[sum].to=v;
    e[sum].next=head[u];//与当前边同起点的上一条边的编号记为当前以u为起点的当前边的编号
    head[u]=sum++;//以u为起点的当前边的编号更新为当前边的编号sum,因为当前边是以u为起点的
//建立反边:
    e[sum].to=u;
    e[sum].next=head[v];
    head[v]=sum++;
}

signed main()
{
    ios::sync_with_stdio(false);//加速cin,cout
    cin.tie(0);//加速cin,cout
    cin>>n>>m;//n个顶点,m条边
    init();
    while(m--)
    {
        cin>>s>>t>>c>>w;
        AddEdge(s,t);
    }
    return 0;
}

 

内容概要:该论文探讨了一种基于粒子群优化(PSO)的STAR-RIS辅助NOMA无线通信网络优化方法。STAR-RIS作为一种新型可重构智能表面,能同时反射和传输信号,与传统仅能反射的RIS不同。结合NOMA技术,STAR-RIS可以提升覆盖范围、用户容量和频谱效率。针对STAR-RIS元素众多导致获取完整信道状态信息(CSI)开销大的问题,作者提出一种在不依赖完整CSI的情况下,联合优化功率分配、基站波束成形以及STAR-RIS的传输和反射波束成形向量的方法,以最大化总可实现速率并确保每个用户的最低速率要求。仿真结果显示,该方案优于STAR-RIS辅助的OMA系统。 适合人群:具备一定无线通信理论基础、对智能反射面技术和非正交多址接入技术感兴趣的科研人员和工程师。 使用场景及目标:①适用于希望深入了解STAR-RIS与NOMA结合的研究者;②为解决无线通信中频谱资源紧张、提高系统性能提供新的思路和技术手段;③帮助理解PSO算法在无线通信优化问题中的应用。 其他说明:文中提供了详细的Python代码实现,涵盖系统参数设置、信道建模、速率计算、目标函数定义、约束条件设定、主优化函数设计及结果可视化等环节,便于读者理解和复现实验结果。此外,文章还对比了PSO与其他优化算法(如DDPG)的区别,强调了PSO在不需要显式CSI估计方面的优势。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值