【PAT甲级】【C++】1003. Emergency (25)
来源:互联网 发布:vmware pro mac os x 编辑:程序博客网 时间:2024/05/20 14:41
#include<cstdio>//#include<limits>#define INF 0x7FFFFFFF#define MAX 500int dis[MAX];int teams[MAX];int paths[MAX];int call[MAX];int map[MAX][MAX];bool visited[MAX];int n,m,start,end;void dijkstra(int s){dis[s]=0;call[s]=teams[s];visited[s]=true;int p=s;while(p!=end){for(int i=0;i<n;i++){if(visited[i]==false){if(dis[i]>dis[p]+map[p][i]){dis[i]=dis[p]+map[p][i];call[i]=call[p]+teams[i];paths[i]=paths[p];}else if(dis[i]==dis[p]+map[p][i]){paths[i]+=paths[p];if(call[i]<call[p]+teams[i])call[i]=call[p]+teams[i];}}}int dismin=INF;for(i=0;i<n;i++)if(visited[i]==false&&dis[i]<dismin){dismin=dis[i];p=i;}visited[p]=true;}}int main(){scanf("%d%d%d%d",&n,&m,&start,&end);for(int i=0;i<n;i++){scanf("%d",&teams[i]);}for(i=0;i<n;i++){dis[i]=INF;paths[i]=1;visited[i]=false;for(int j=0;j<n;j++)map[i][j]=INF;}for(i=0;i<m;i++){int c1,c2,L;scanf("%d%d%d",&c1,&c2,&L);map[c1][c2]=map[c2][c1]=L;}dijkstra(start);printf("%d %d\n",paths[end],call[end]);return 0;}
0 0
- 【PAT甲级】【C++】1003. Emergency (25)
- Pat甲级1003. Emergency (25)
- 【PAT甲级】1003. Emergency (25)
- PAT甲级1003. Emergency (25)
- 1003. Emergency (25) PAT 甲级
- PAT甲级 1003. Emergency (25)
- PAT甲级1003. Emergency (25)
- PAT 甲级 1003. Emergency (25)
- PAT 甲级 1003.Emergency
- [PAT-甲级]1003.Emergency
- PAT 甲级 1003. Emergency
- PAT TEST甲级1003. Emergency (25)
- PAT甲级练习1003. Emergency (25)
- PAT 甲级1003. Emergency (25) DIJKSTRA
- 1003. Emergency (25)-PAT甲级真题(Dijkstra算法)
- PAT甲级 1003.Emergency(25) 题目翻译与答案
- pat 甲级 1003 Emergency
- pat甲级_路径问题(例题:pat 1003 Emergency (25))
- 面试
- C++复习2
- AES加密解密算法的FPGA实现(二)
- nginx方向代理2
- Android NDK Application.mk(中文翻译)
- 【PAT甲级】【C++】1003. Emergency (25)
- 异步任务-AsyncTack基本使用
- MySQL ibdata1瘦身
- 单向链表的插入排序
- Matlab 中 arrayfun用法
- 补码的加减乘除和移位
- 第24篇 linux下布署apprtc(二)
- 由swr_get_delay想到的
- 51NOD 1065 最小正子段和