1003. Emergency (25)
来源:互联网 发布:js鼠标跟随效果 编辑:程序博客网 时间:2024/06/11 04:50
#include <iostream>using namespace std;#define N 500struct Node {int d;int paths;int maxteam;bool done;};int main(int argc, char **argv) {int m, n, src, dst, c1, c2;int adj[N][N] = {{0}}, team[N] = {0};Node NodeList[N] = {0};cin >> n >> m >> src >> dst;for(int i = 0; i < n; i ++) {cin >> team[i];NodeList[i].maxteam = team[i];}for(int i = 0; i < m; i ++) {cin >> c1 >> c2;cin >> adj[c1][c2];adj[c2][c1] = adj[c1][c2];}int next = src;NodeList[src].paths = 1;NodeList[src].done = true;while(true) {for(int i = 0; i < n; i ++) {if(adj[next][i] && !NodeList[i].done) {int tmpd = NodeList[next].d + adj[next][i];if(!NodeList[i].d || tmpd < NodeList[i].d) {NodeList[i].paths = NodeList[next].paths;NodeList[i].maxteam = NodeList[next].maxteam + team[i];NodeList[i].d = tmpd;}else if(tmpd == NodeList[i].d) {NodeList[i].paths += NodeList[next].paths;int tmpt = NodeList[next].maxteam + team[i];if(tmpt > NodeList[i].maxteam)NodeList[i].maxteam = tmpt;}}}int minD = 0x7FFFFFFF;for(int i = 0; i < n; i ++) {if(NodeList[i].d && !NodeList[i].done && NodeList[i].d < minD) {next = i;minD = NodeList[i].d;}}NodeList[next].done = true;if(next == dst) {break;}}cout << NodeList[dst].paths << ' ' << NodeList[dst].maxteam << endl;return 0;}
0 0
- 1003. Emergency (25)
- 1003. Emergency (25)-PAT
- (PAT)1003. Emergency (25)
- 1003. Emergency (25)
- 【C++】1003. Emergency (25)*
- 1003. Emergency (25)
- PAT 1003. Emergency (25)
- 1003. Emergency (25)
- 1003. Emergency (25)
- PAT 1003. Emergency (25)
- 1003. Emergency (25)
- 1003. Emergency (25)
- [PAT]1003. Emergency (25)
- 1003. Emergency (25)
- 1003. Emergency (25)
- 1003. Emergency (25)
- 1003. Emergency (25)
- 1003. Emergency (25)
- YC创业课之Peter Thiel:追求垄断的创业者才能成功
- c++输入输出流
- iOS开发的一些奇巧淫技
- Insertion Sort List
- 大话linux性能命令
- 1003. Emergency (25)
- 各驱动在源码中的位置
- 多态性实例解析
- Hibernate Criteria分组和聚合
- YC创业课之Facebook Growth Team:首先是用户留存,其次才是用户增长
- cocos2dx 文本标签
- Openssl之BIO系列(3)
- MAC下常用命令的中文帮助文档(man)
- Android中Parcelable接口用法