floyed dij spfa 模板
2024-08-29 06:04:19
/*
SPFA模板
*/
const int inf=0x3f3f3f3f;
inline int SPFA(int s){
memset(dis,inf,sizeof(dis));
queue<int > q;
dis[s]=;
q.push(s);
vis[s]=;
while(!q.empty()){
int u=q.front;
q.pop();
vis[u]=;
for(int i=head[u];i;i=edge[i].next ){
int v=edge[i].to ;
if(dis[v]>dis[u]+edge[i].value ){
dis[v]=dis[u]+edge[i].value ;
if(!vis[v]){
vis[v]=;
q.push(v);
}
cntt[v]++;
if(cntt[v]>=n) return ;
}
}
}
return ;
}
/*
dijstra模板 (堆优化)
*/
const int inf=0x3f3f3f3f;
typedef pair<int ,int > p
inline void dijstra(int s){
memset(dis,inf,sizeof(dis))
priority_queue<p,vector<p>,greater<p> > q;
dis[s]=;
q.push(make_pair(,s));//pair类型默认先比较第一项
while(!q.empty()){
int u=q.top().second;
int w=q.top().first;
q.pop();
if(dis[u]!=w) continue;
for(int i=head[u];i;i=edge[i].next ){
int v=edge[i].to ;
if(dis[v]>dis[u]+edge[i].value ){
dis[v]=dis[u]+edge[i].value ;
q.push(make_pair(dis[v],v));
}
}
}
}
/*
floyd模板
*/
inline void floyd(){
for(int k=;k<=n;k++)
for(int i=;i<=n;i++)
for(int j=;j<=n;j++){
dis[i][j]=min(dis[i][k]+dis[k][j],dis[i][j]);
//或者:
if(dis[i][j]>dis[i][k]+dis[k][j])
dis[i][j]=dis[i][k]+dis[k][j];
}
}
最新文章
- php cUrl模拟登录,cookie保存到文件中
- Oracle(控制用户权限)
- HDOJ 3790
- 通过注册表查找oracle_home的位置
- Unity3d插件推荐
- Factorials 阶乘
- 简述sprintf、fprintf和printf函数的区别
- 转:【译】Asp.net MVC 利用自定义RouteHandler来防止图片盗链
- find命令之(-atime,-ctime,-mtime)
- IntelliJ IDEA之UML类图
- 基于VC的MFC界面开发
- TCL 引用同目录下其他脚本文件--source
- C# ConfigurationManager不存在问题解决
- extern介绍
- 从零开始学 Web 之 HTML5(二)表单,多媒体新增内容,新增获取操作元素,自定义属性
- 20165303实验一 Java开发环境的熟悉
- lamba数据架构以及数据湖
- php的几个面试题
- 如何研究某个gene的ceRNA 网络
- Servlet与JSP九大内置对象的对应关系