图论复习1,贴几个求单源最短路的模板
来源:互联网 发布:java rar 解压 编辑:程序博客网 时间:2024/06/05 08:02
- 最短路(Dijkstra+Priority_queue+邻接表)
- struct NODE
- {
- int to;
- int len;
- bool operator<(const NODE& cmp ) const{return cmp.len<len;}
- };
- void dijkstra(int n,vector<NODE> buf[],int s,int* min)
- {
- int i;
- NODE v;
- for (i=0;i<n;i++)
- min[i]=INF,vis[i]=false;
- for ( i=0 ; i<buf[s].size() ; i++ )
- {
- min[buf[s][i].to]=buf[s][i].len;
- que.push(buf[s][i]);
- }
- vis[s]=true;
- while (!que.empty())
- {
- v=que.top();que.pop();vis[v.to]=true;
- for ( i=0 ; i<buf[v.to].size() ; i++ )
- if ( !vis[buf[v.to][i].to] && min[buf[v.to][i].to]>min[v.to]+buf[v.to][i].len )
- {
- que.push(buf[v.to][i]);
- min[buf[v.to][i].to]=min[v.to]+buf[v.to][i].len;
- }
- }
- }
- 最短路(SPFA+正向表)
- Const int INF = 1000000000;
- struct NODE
- {
- int to;
- int len;
- struct NODE *next;
- };
- void SPFA( NODE* mat[] , int P , int s , int dis[] )
- {
- int i,x,head,tail;
- NODE* tp;
- for(i=0;i<P;i++)
- dis[i]=INF;
- for ( i=0 ; i<P ; i++ )
- inqueue[i]=false;
- dis[s]=0;
- head=tail=0;
- que[tail++]=s;
- inqueue[s]=true;
- while(head<tail)
- {
- x=que[head++];
- inqueue[x]=false;
- for( tp=mat[x] ; tp ; tp=tp->next )
- if( dis[tp->to] > dis[x]+tp->len )
- {
- dis[tp->to]=dis[x]+tp->len;
- if(!inqueue[tp->to])
- {
- que[tail++]=tp->to;
- inqueue[tp->to]=true;
- }
- }
- }
- }
第二个SPFA是从网上找来的,然后我自己修改了一下,因为做了poj1511,所以把邻接表用前向星的形式写了,题目中的数据大的变态。。。1<=V,E<=1000000,建议都开成全局变量,然后尽量少用形参。
但是一般情况下,用vector表示邻接表方便点。
- 图论复习1,贴几个求单源最短路的模板
- 【最短路】图论复习(二)
- 图论模板-最短路
- Dijkstra求单源最短路模板
- 模板的复习
- HDU 1874 图论模板复习
- 复习Java的几个知识点
- 复习中遇到的几个名词
- 面试遇到的几个概念 当做复习
- 复习关于比较的几个方法
- 插头dp的几个模板
- 插头dp的几个模板
- 我的几个小模板
- 针对backtrack的几个模板
- 【模板】最短路算法的优化
- 求最短路的四个模板
- 【讲解 + 模板】四种最短路算法的比较
- 最短路复习
- 关于文件的操作
- ASP.NET SQL Server 注册工具 (Aspnet_regsql.exe)
- linux加载当前目录的动态库
- 借鸡生蛋:ajax跨域提交数据
- 使用Varnish代替Squid做网站缓存加速器的详细解决方案
- 图论复习1,贴几个求单源最短路的模板
- QQ and Fition for linux
- 迷茫.Net之路
- apache integrate tomcat with jk1.2
- csdn上的第一篇
- 学习petshop笔记
- TList(1)
- MFC消息详解
- 启承