最短路模板
来源:互联网 发布:linux怎么看内存大小 编辑:程序博客网 时间:2024/06/13 08:14
dijkstra+heap优化
struct edge{ int v,w,nxt;}e[M];struct node{ int len,num; bool operator<(const node& t) const {return len>t.len;}}dis[N];priority_queue<node> q;int e_cnt,n,m;int vis[N],head[N];void Init(){ e_cnt=0; memset(head,-1,sizeof(head));}void Addedge(int u,int v,int w){ /*for(int i=head[u];i!=-1;i=e[i].nxt)//判断重边 { if(e[i].v==v) { if(e[i].w>w) e[i].w=w; return; } }*/ e[e_cnt].v=v; e[e_cnt].w=w; e[e_cnt].nxt=head[u]; head[u]=e_cnt++;}void Dijkstra(int s){ memset(vis,0,sizeof(vis)); for(int i=1;i<=n;i++) { dis[i].len=inf; dis[i].num=i; } dis[s].len=0; q.push(dis[s]); while(!q.empty()) { node t=q.top(); q.pop(); int u=t.num; if(vis[u]) continue; vis[u]=1; for(int i=head[u];i!=-1;i=e[i].nxt) { int len=e[i].w; int v=e[i].v; if(dis[v].len>dis[u].len+len) { dis[v].len=dis[u].len+len; q.push(dis[v]); } } }}
spfa
struct edge{ int v,w,nxt;}e[M];queue<int> q;int e_cnt,n,m;int vis[N],head[N],dis[N],in[N];void Init(){ e_cnt=0; memset(head,-1,sizeof(head));}void Addedge(int u,int v,int w){ /*for(int i=head[u];i!=-1;i=e[i].nxt)//判断重边 { if(e[i].v==v) { if(e[i].w>w) e[i].w=w; return; } }*/ e[e_cnt].v=v; e[e_cnt].w=w; e[e_cnt].nxt=head[u]; head[u]=e_cnt++;}bool Spfa(int s){ memset(in,0,sizeof(in)); memset(vis,0,sizeof(vis)); for(int i=1;i<=n;i++)dis[i]=inf; q.push(s); dis[s]=0; while(!q.empty()) { int u=q.front(); q.pop(); vis[u]=0; for(int i=head[u];i!=-1;i=e[i].nxt) { int v=e[i].v; if(dis[v]>dis[u]+e[i].w) { dis[v]=dis[u]+e[i].w; if(!vis[v]) { in[v]++; if(in[v]>n) return true;//有负环 vis[v]=1; q.push(v); } } } } return false;}
floyd
int n,m;int e[N][N];void Floyd(){ for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) e[i][j]=(i==j)?0:inf; for(int i=0;i<m;i++) { int u,v,w; scanf("%d%d%d",&u,&v,&w); e[u][v]=min(e[u][v],w); } for(int k=1;k<=n;k++) for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) if(e[i][j]>e[i][k]+e[k][j]) e[i][j]=e[i][k]+e[k][j];}
0 0
- 最短路模板
- 最短路模板
- poj1125最短路模板
- 最短路 SPFA模板
- 最短路 kruskal模板
- 最短路 dijkstra模板
- 最短路模板
- 最短路模板总结
- 最短路模板
- Dijkstra 模板 最短路
- 最短路模板
- 【最短路算法模板】
- 最短路模板
- 最短路 模板
- 最短路模板
- 最短路 【spfa】 模板
- 最短路算法模板
- 最短路模板
- 【JZOJ3808】道路值守
- tomcat解析jsp错误
- jQuery-ui datepicker 日历选择器
- bash shell test条件测试[[ ]]和[ ]异同小结
- C++开发工程师课程第一周笔记 GeekBank
- 最短路模板
- SQL注入这个坑
- ECharts地图应用定位
- 关于PopupWindow的简单说明
- 微信小程序创建时:当前开发者未绑定此appid,请到mp后台操作
- iOS转场动画总结
- 学习HTML第一天
- 原生javascript设置获取行间样式及非行间样式的写法
- .\Objects\5.sct(7): error: L6236E: No section matches selector - no section to be FIRST/LAST.