SPFA+链式前向星
2024-10-09 02:17:15
板子
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll inf=2<<30-1;
const ll maxn=599999;
ll head[maxn*2],cnt=1,n,m,s,dis[maxn];
struct edge{
ll to,w,nxt;
}d[maxn];
queue<ll>q;
bool vis[maxn];
void add(int u,int v,int w){
d[cnt].to=v,d[cnt].nxt=head[u];
d[cnt].w=w;head[u]=cnt++;
}
void spfa(ll s)
{
memset(vis,0,sizeof(vis));
for(int i=0;i<=n;i++) dis[i]=inf;
dis[s]=0;q.push(s);vis[s]=1;
while(!q.empty())
{
ll ans=q.front();q.pop();vis[ans]=0;
for(int i=head[ans];i;i=d[i].nxt)
{
if(dis[d[i].to]>dis[ans]+d[i].w)
{
dis[d[i].to]=dis[ans]+d[i].w;
if(!vis[d[i].to])//没在队列中
{
vis[d[i].to]=1;
q.push(d[i].to);
}
}
}
}
}
int main()
{
cin>>n>>m>>s;
for(int i=1;i<=m;i++)
{
int l,r,w;
cin>>l>>r>>w;
add(l,r,w);
}
spfa(s);
}
最新文章
- .NET LINQ 元素操作
- Memcached存储命令 - replace
- VS用法总结
- ASP.NET MVC进阶二
- Java学习记录-注解
- JS全局函数parseInt和parseFloat
- 算法导论 第六章 思考题 6-3 d叉堆
- SVN-服务器搭建、apache2整合、eclipse使用
- java解析xml的4种经典方法
- 关于android:inputType属性的说明
- appendChild()插入节点需注意的问题
- asp.net 163邮件发送
- CSS自学笔记(8):CSS拓展(一)
- [LeetCode][Python]Integer to Roman
- c++ build options(important)
- [国嵌攻略][173][BOA嵌入式服务器移植]
- tday02 上节课复习
- 轻松制作X86 OPENWRT USB启动盘
- Go 语言读书笔记
- C++max的使用方法