hdu 1874 畅通工程续(最短路Dij邻接矩阵)
来源:互联网 发布:java axis简单入门 编辑:程序博客网 时间:2024/06/01 19:07
题目地址
题目大意:给出n个点m条边,并给出起点和终点,求起点到终点的最短路
解题思路:1.没有负边权
2.复杂度n^2(n为点的个数)
3.起点固定,不断更新终点,若要输出路径,则需要逆序输出
4.适用于有向图和无向图
#include <iostream>#include <cstdio>#include <cmath>#include <cstring>#include <vector>using namespace std;const int maxn=200+10;const int INF=0xfffffff;int n,m,mp[maxn][maxn],dis[maxn];bool vis[maxn];void dijkstra(int s){ memset(vis,0,sizeof(vis)); int cur=s; dis[cur]=0; vis[cur]=1; for(int i=0;i<n;i++) { for(int j=0;j<n;j++) if(!vis[j] && dis[cur] + mp[cur][j] < dis[j]) dis[j]=dis[cur] + mp[cur][j]; int minn=INF; for(int j=0;j<n;j++) if(!vis[j] && dis[j] < minn) minn=dis[cur=j]; vis[cur]=true; }}int main(){ while(scanf("%d%d",&n,&m) != EOF) { for(int i=0;i<n;i++) { dis[i]=INF; for(int j=0;j<n;j++) i==j ? mp[i][j]=0 : mp[i][j]=INF; } for(int i=0;i<m;i++) { int from,to,val; scanf("%d%d%d",&from,&to,&val); if(mp[from][to] > val) ///很重要,更小才需要更新 mp[to][from]=mp[from][to]=val; } int s,t; scanf("%d%d",&s,&t); dijkstra(s); dis[t]==INF ? printf("-1\n") : printf("%d\n",dis[t]); } return 0;}
0 0
- hdu 1874 畅通工程续(最短路Dij邻接矩阵)
- hdu 1874 畅通工程续(最短路Dij邻接表)
- hdu 1874 畅通工程续(最短路spfa邻接矩阵)
- hdu 1874 畅通工程续 ( 最短路(dij/floyd))
- hdu 1874 畅通工程续 - 最短路
- HDU 1874 畅通工程续 最短路
- hdu 1874 畅通工程续(最短路)
- hdu 1874 畅通工程续 最短路
- HDU-1874-畅通工程续【最短路】
- HDU 1874畅通工程续&HDU 2544 最短路(Dijsktra)
- hdu 1874 畅通工程(最短路)
- hdu 1874畅通工程续一秒(最短路)
- HDU 1874 畅通工程续 最短路算法检验题
- HDOJ/HDU---1874 畅通工程续 最短路(dijkstra)
- hdu 1874 畅通工程续(最短路)
- hdu 1874 畅通工程续【裸最短路】
- HDU-1874 畅通工程续 最短路算法模板
- hdu 1874最短路之畅通工程续
- Android Facebook登录的简单实现
- Linux系统编程之fcntl使用
- Interview Prep for xx company
- SVN服务器搭建和使用
- 非阻塞算法-简单的计数器
- hdu 1874 畅通工程续(最短路Dij邻接矩阵)
- php页面编码设置的方法
- iOS objc_msgSend 报错解决方案
- Linux who 命令
- Hadoop之应用程序运行过程(面试)
- 代码手写UI,xib和StoryBoard间的博弈,以及Interface Builder的一些小技巧
- DNS查询报文和应答报文抓包分析
- Android跨进程通信时犯的错误
- 你不知道的JavaScript--Item26 异步的脚本加载