【HDU
来源:互联网 发布:adobe pdf 电脑软件 编辑:程序博客网 时间:2024/06/05 16:59
A - 最短路
在每年的校赛里,所有进入决赛的同学都会获得一件很漂亮的t-shirt。但是每当我们的工作人员把上百件的衣服从商店运回到赛场的时候,却是非常累的!所以现在他们想要寻找最短的从商店到赛场的路线,你可以帮助他们吗?
输入保证至少存在1条商店到赛场的路线。
2 11 2 33 31 2 52 3 53 1 20 0
32
题意:有n个路口,m条路,通过一条路的花费为c,问从点1到点n的最小花费是多少。
分析:最基础的最短路,下面给出dijkstra和spfa两种做法。
代码如下:
dijkstra做法:
#include <map>#include <cmath>#include <queue>#include <stack>#include <vector>#include <cstdio>#include <string>#include <cstring>#include <iostream>#include <algorithm>#define LL long long#define INF 0x3f3f3f3fusing namespace std;const int MX = 105;int mp[MX][MX];int dis[MX];int vis[MX];int n, m;void dijkstra(int s){ memset(vis, 0, sizeof(vis)); memset(dis, INF, sizeof(dis)); dis[s] = 0; for(int i = 1; i <= n; i++){ int mindis = INF, k = -1; for(int j = 1; j <= n; j++){ if(!vis[j] && dis[j] < mindis){ mindis = dis[j]; k = j; } } vis[k] = 1; for(int j = 1; j <= n; j++){ if(dis[j] > dis[k] + mp[k][j]){ dis[j] = dis[k] + mp[k][j]; } } }}int main(){ while(~scanf("%d%d", &n, &m), n || m){ memset(mp, INF, sizeof(mp)); for(int i = 0; i < m; i++){ int u, v, s; scanf("%d%d%d", &u, &v, &s); mp[u][v] = mp[v][u] = s; } dijkstra(1); printf("%d\n", dis[n]); } return 0;}
spfa做法:
#include <map>#include <cmath>#include <queue>#include <stack>#include <vector>#include <cstdio>#include <string>#include <cstring>#include <iostream>#include <algorithm>#define LL long long#define INF 0x3f3f3f3fusing namespace std;const int MX = 105;int mp[MX][MX];int dis[MX];int inq[MX];int n, m;void spfa(int s){ memset(dis, INF, sizeof(dis)); memset(inq, 0, sizeof(inq)); queue<int> q; q.push(s); inq[s] = 1; dis[s] = 0; while(!q.empty()){ int u = q.front(); q.pop(); inq[u] = 0; for(int i = 1; i <= n; i++){ if(dis[i] > dis[u] + mp[u][i]){ dis[i] = dis[u] + mp[u][i]; if(!inq[i]){ q.push(i); inq[i] = 1; } } } } printf("%d\n", dis[n]);}int main(){ while(~scanf("%d%d", &n, &m), n || m){ memset(mp, INF, sizeof(mp)); for(int i = 1; i <= m; i++){ int u, v, c; scanf("%d%d%d", &u, &v, &c); mp[u][v] = mp[v][u] = c; } spfa(1); } return 0;}
阅读全文
0 0
- hdu
- hdu
- HDU
- hdu ()
- hdu
- hdu
- HDU
- HDU
- hdu
- hdu
- HDU
- Hdu
- hdu
- hdu-
- hdu
- hdu
- hdu
- HDU
- 'Application windows are expected to have a root view controller at the end of application launch' [
- ASP.NET Core 运行原理解剖[2]-Hosting补充之配置介绍
- kendoUI 简单增删改查
- 半年总结——燕雀鸿鹄皆有志
- Kafka Manager实现原理与填坑
- 【HDU
- array_map实现将多维数组转换成字符串的简单方法
- 修改navigationbar右侧按钮离屏幕边缘位置
- 第4讲项目-计算两电阻并联后的阻值
- Spark入门实战系列
- 动态改变表单form的路径
- Idea 安装 antlr 插件后 ANTLR Preview 怎么用的
- 快来看看阿里巴巴的常用面试题
- 敦煌api 获取access_token和用户信息