1003 Emergence
来源:互联网 发布:网络机柜布置图 编辑:程序博客网 时间:2024/06/05 07:05
题意要求出最短路径数目和最小花费。经典的Dijkstral算法变形。
// 1003. Emergency.cpp: 主项目文件。#include <cstdio>#include <cstring>const int N=501;const int INT_MAX=1<<30;int map[N][N];bool used[N];int people[N];int dist[N],resource[N],paths[N];int n,m,start,end;void dijsktral(){if(start==end){printf("1 %d\n",people[start]);return;}memset(used,0,sizeof(used));for(int i=0;i<n;i++){dist[i]=map[start][i];if(map[start][i]!=INT_MAX){resource[i]=people[start]+people[i];paths[i]=1;}else{resource[i]=0;paths[i]=0;}}resource[start]=people[start];used[start]=true;for(int i=1;i<n;i++){int min=INT_MAX,minf=-1;for(int j=0;j<n;j++){if(!used[j]&&dist[j]<min){min=dist[j];minf=j;}}used[minf]=true;if(minf==end)break;for(int j=0;j<n;j++){if(!used[j]){int distTemp=dist[minf]+map[minf][j],resourceTemp=resource[minf]+people[j];if(distTemp<dist[j]){dist[j]=distTemp;paths[j]=paths[minf];resource[j]=resourceTemp;}else if(distTemp==dist[j]){paths[j]=paths[minf]+paths[j];if(resourceTemp>resource[j])resource[j]=resourceTemp;}}}}printf("%d %d\n",paths[end],resource[end]);}int main(){while(~scanf("%d%d%d%d",&n,&m,&start,&end)){for(int i=0;i<n;i++)scanf("%d",people+i);for(int i=0;i<n;i++)for(int j=i;j<n;j++)map[i][j]=map[j][i]=INT_MAX;for(int i=0;i<m;i++){int from,to,dd;scanf("%d%d%d",&from,&to,&dd);if(map[from][to]>dd)map[from][to]=map[to][from]=dd;}dijsktral();}return 0;}
- 1003 Emergence
- Emergence
- Emergence、Cascading effect and Delay in network system
- 1003
- 1003
- 1003
- 1003
- 1003
- 1003
- 1003
- 1003
- 1003
- 1003
- 1003
- 1003
- 1003
- 1003
- 1003
- 磁盘结构:
- 马云:写给在工厂上班的同学们
- fpga工具
- Android GPS 定位 3 详细地址周边地图图片
- 网页图片优化
- 1003 Emergence
- Linux 内核解读之内存管理----memory.c
- Java JNI由浅入深(包括:Java和C++互传ArrayList泛型对象参数)
- C#基础语法
- centos安装后要做的事情
- Win8 背景 颜色大全
- 安装 卸载 windows服务
- Eclipse编写Android程序时layout的xml里的id不能在R.java里自动生成
- win环境下,用虚拟化工具打包Qt动态编译exe的过程