POJ 3268 基本dijkstra
来源:互联网 发布:python冒泡排序算法 编辑:程序博客网 时间:2024/05/26 02:20
比较简单,没什么好说的,几乎就是模版题了。
#include<cstdio>#include<cstring>#include<algorithm>#include<queue>#include<vector>using namespace std;const int maxn=100010;const int INF=1e9;int n,m,x,a,b,c,d[maxn],vis[maxn];struct Node{ int d,u; bool operator < (const Node& a)const { return d>a.d; }};struct Edge{ int u,v,w;};vector<Edge> edge;vector<int> g[maxn];void init(){ memset(d,0,sizeof(d));}void add_edge(int u,int v,int w){ Edge p; p.u=u; p.v=v; p.w=w; edge.push_back(p); g[u].push_back(edge.size()-1);}void dijkstra(int u){ for(int i=1;i<=n;i++) d[i]=INF; memset(vis,0,sizeof(vis)); d[u]=0; priority_queue<Node> q; Node p; p.d=d[u]; p.u=u; q.push(p); while(!q.empty()) { Node t=q.top(); q.pop(); u=t.u; if(vis[u]) continue; vis[u]=true; for(int k=0;k<g[u].size();k++) { Edge e=edge[g[u][k]]; if(d[e.v]>d[e.u]+e.w) { d[e.v]=d[e.u]+e.w; Node tp; tp.d=d[e.v]; tp.u=e.v; q.push(tp); } } }}int main(){ while(scanf("%d%d%d",&n,&m,&x)!=EOF) { init(); while(m--) { scanf("%d%d%d",&a,&b,&c); add_edge(a,b,c); } int ans=-1; for(int i=1;i<=n;i++) { int sum=0; dijkstra(i); sum+=d[x]; dijkstra(x); sum+=d[i]; ans=max(ans,sum); } printf("%d\n",ans); } return 0;}
0 0
- POJ 3268 基本dijkstra
- poj 3268 dijkstra
- POJ 3268 dijkstra算法
- poj 3268 dijkstra
- Poj 3268(Dijkstra)
- poj 3268 dijkstra
- POJ 3268 双向Dijkstra
- poj 3268 dijkstra
- poj 3268 Dijkstra运用
- poj 3268 (dijkstra)
- POJ 3268 (dijkstra变形)
- poj 3268 双向dijkstra
- poj 3268 dijkstra
- POJ 3268 Dijkstra算法
- Dijkstra POJ
- 基本算法dijkstra的POJ水题推荐
- POJ 3268 Silver Cow Party(Dijkstra算法)
- POJ 3268 dijkstra()正反矩阵
- 用HttpGet和HttpClient网路请求数据
- 【洛谷 1054】[NOIP2005] 等价表达式
- 基础总结篇之一:Activity生命周期
- HashMap<string, ...> 能有多快
- 模拟退火法---飞机巡航问题
- POJ 3268 基本dijkstra
- unity3D 如何提取游戏资源 (反编译)+代码反编译【P.M.出品】
- Android-SQLiteOpenHelper的使用
- unity Animator 怎么判断一个动画播放结束
- 字符串替换函数strreplace
- CVS提交代码报错java.io.IOException: proxy error: Forbidden
- Hibernate一对多和多对一关系详解 (转载)
- 设计型软件无线电教学平台—USDR-2x
- 核心DOM编程