Dijkstra POJ
来源:互联网 发布:android网络访问404 编辑:程序博客网 时间:2024/05/19 13:19
/*题意就是说从节点为1走到节点为n的节点花的时间最短;这个题很明显就是最短路的一些知识了,用dijkstra水水的就过去了;然后呢就这个题目来说一下关于我对dijkstra的看法;这个东西呢就是计算单源最短路(从某个点到某一个点的最短时间);这个我们先将源头节点视为0(开始走的时间为0),其余的为inf(无穷);在n次循环中,我们在每一个未标记的节点中,选出达到这个点所花的最小时间的位置,再给予该位置进行标记,再从该位置出发更新它所有边的时间;这里有一个松弛操作,说白了就是将时间复杂度降低一点,但是个人感觉为没什么卵用;这个松弛操作以后继续说吧*/#include<cstdio>#include<cstring>using namespace std;const int inf=1<<29;const int maxn=1e3+7;int mmp[maxn][maxn];///地图兼权值记录;bool vis[maxn];int lowcost[maxn];///表示到达某个节点的最短开销;void dijkstra(int n){ for(int i=1;i<=n;i++)///进行初始化一下; { lowcost[i]=inf; vis[i]=false; } lowcost[1]=0;///从1开始走嘛;记录当前节点所花时间为0; for(int j=1;j<=n;j++) { int k=-1,Min=inf; for(int i=1;i<=n;i++) if(!vis[i]&&lowcost[i]<Min) { Min=lowcost[i]; k=i; } ///找到未标记的时间最短的节点。 if(k==-1) break;///未找到就直接break; vis[k]=true; for(int i=1;i<=n;i++)///从该节点引申到与它相邻的所有节点(相邻边,不断更新最小值); if(!vis[i]&&lowcost[k]+mmp[k][i]<lowcost[i]) lowcost[i]=lowcost[k]+mmp[k][i]; } return ;}int main (){ int n,t; scanf("%d %d",&t,&n); int x,y,w; memset(mmp,0,sizeof(mmp)); memset(vis,0,sizeof(vis)); memset(lowcost,0,sizeof(lowcost)); for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) mmp[i][j]=inf; for(int i=1;i<=t;i++) { scanf("%d %d %d",&x,&y,&w); if(w<mmp[x][y])///可能有重边的出现,咋们得取最小的进行计算,所以我们将mmp[][]存在于无向图的节点权值为无穷 { mmp[x][y]=w; mmp[y][x]=mmp[x][y]; } } dijkstra(n); printf("%d\n",lowcost[n]); return 0;}
阅读全文
0 0
- Dijkstra POJ
- poj 3159 heap+dijkstra
- poj 2253 - Frogger --- dijkstra
- poj 3268 dijkstra
- POJ 1847 Dijkstra应用
- poj 1847(Tram) Dijkstra
- poj 2253 : Frogger (dijkstra)
- poj 1125 dijkstra
- POJ 3268 dijkstra算法
- POJ 1502 dijkstra()
- POJ 1797 dijkstra()变形
- dijkstra-poj-2263
- POJ 1125 暴力+Dijkstra
- POJ 2502 Dijkstra
- poj 2387 dijkstra
- poj 1122 dijkstra
- poj 3268 dijkstra
- poj 1062 dijkstra
- 144. Binary Tree Preorder Traversal
- HDU 1114:Piggy-Bank
- 打造自己的JS库
- 将数组A中的内容和数组B中的内容进行交换。(数组一样大)
- RPC中nio和代理模式的应用
- Dijkstra POJ
- JS获取-某一天是某个时间段内的 第几周,星期几
- Visualizing and understandingConvolutional Networks笔记3
- openOCD在ubuntu16.04上的安装
- List在调用add、remove方法后报java.lang.UnsupportedOperationException
- ArcGIS Engine中 IGeometry和Json字符串的相互转换
- MySQL优化分库分表,为什么要分表,分表以后如何进行排序查询,业务如何设计?
- 云服务器 ECS配置MySQL主从连接
- 实验测试1《C++ Primer》第五版——第九章 顺序容器