EOJ 1818
来源:互联网 发布:sql全连接 编辑:程序博客网 时间:2024/04/28 18:20
#include <iostream>#include <algorithm>#include <cstdlib>#include <cstdio>#include <queue>#include <cstring>#include <utility>#include <vector>#include <sstream>#include <set>#define maxn 105#define INF 0x3f3f3f3fusing namespace std;typedef long long LL;int m[maxn][maxn];int d[maxn];int vis[maxn];int cnt[maxn];int num[maxn][maxn];int n;int k;void Dijkstra(){ memset(vis, 0, sizeof(vis));//vis=0标示未确定最短长度,=1标示已经确定 memset(d, INF, sizeof(d));//将最短路径数组初始化为无穷大 memset(cnt, 0, sizeof(cnt));//初始化最短路径数目数组为0 d[1] = 0;//自己对自己的距离为0 cnt[1]=1;//自己对自己的最短距离个数为1 for (int i=0; i<n; i++) { int small=INF;//最小值的初值为无穷大 int u = 0;//最小值下标为u for (int j=1; j<=n; j++) { if(!vis[j] && d[j] <= small) small = d[u = j];//找到比当前最小值更小的那个d值,保存坐标 } vis[u] = 1;//此时vis[u]表示坐标为u的那个定点的最小值已经找到,放入vis数组中 for (int v=1; v<=n ; v++) { if (m[u][v] && !vis[v])//如果u,v中有边并且v的最小值未被确定 { if (d[v] > d[u] + m[u][v])//如果经过u,dis[v]会更小,则交换 { d[v] = d[u] + m[u][v]; cnt[v] = num[u][v] * cnt[u];//如果发现新的路径就更新cnt }else if (d[v] == d[u] + m[u][v]) { cnt[v] += cnt[u] * num[u][v];//如果发现一条和原来长度相同的路径,就个数相加 } } } }}int main(){ scanf("%d%d", &n, &k); int u; int v; int w; memset(m, 0, sizeof(m));//初始化保存路径长度的二维数组 for (int i=0; i<k; i++) { scanf("%d%d%d", &u, &v, &w); m[u][v] = w; num[u][v]++;//u和v中有路径,路径个数加1 } Dijkstra();//调用函数 if (d[n] == INF)//如果不存在最短路径 { printf("-1 0\n"); }else { printf("%d %d\n", d[n], cnt[n]); } return 0;
}
本题基本为调用上一题的函数,但是要计算最短路径的个数。每次寻找到比d还要短的路径时候,就要更替cnt的值,如果找到与d相等的路径,则要加上本次找到的路径个数。
0 0
- EOJ 1818
- EOJ
- EOJ
- EOJ
- EOJ gauss
- EOJ 1255
- EOJ 1851
- EOJ 2096
- EOJ 2141
- EOJ 2562
- EOJ----足球锦标赛
- eoj 3451
- eoj 3449
- eoj 3442
- EOJ 2112 WYI & EOJ 2113 WYII
- EOJ 1839 表达式(数据结构) & EOJ 1003
- EOJ 5 Bad Cowtractors
- 【EOJ】2895循环小数
- 问个在html5上播放视频的问题-100分立等可取。
- 程序、进程、线程、同步与死锁
- 关于Android程序加密的问题
- Vue一些注意点
- Docker实践(三):容器内信息获取、命令的执行、容器的导入和导出
- EOJ 1818
- Eclipse导入的安卓项目变成两个,MainActivity和CordovaLib
- cxf 调用接口时报stream is closed
- 一个关于android布局的问题!
- Android 分享功能
- php + access + ADODB.Connection 数据更新失败
- 135. Candy 考验逻辑能力的时候到了
- shell 第四篇
- 2017战略No.3:不做核心,做谋士