1003. Emergency (25)
来源:互联网 发布:网络诈骗案件案例分析 编辑:程序博客网 时间:2024/06/11 01:02
考察最短路,以及相同最短路存在时的额外信息最优选择
#include<iostream>#include<vector>#define INF 0x6FFFFFFFtypedef struct Node{int nPath;int call;int dis;}Node;std::vector<Node> city;std::vector<std::vector<int>> map;std::vector<bool> visit;std::vector<int> team;int extract_min(){int num = city.size();int min = INF;int minIdx = -1;for(int i = 0; i < num; ++i){if(!visit[i] && city[i].dis < min){minIdx = i;min = city[i].dis;}}return minIdx;}void Dijkstra(int s, int t){//initialint num = map.size();city.resize(num);for(int i = 0; i < num; ++i){city[i].dis = INF;city[i].call = 0;city[i].nPath = 0;}city[s].dis = 0; city[s].nPath = 1; city[s].call = team[s];visit.assign(num, false);while(true){//extract minint u = extract_min();if(u != -1){//extract succeedvisit[u] = true;if(u == t) return;//relaxation stepfor(int v = 0; v < num; ++v){if(map[u][v] == INF || visit[v]) continue;if(city[v].dis > city[u].dis+map[u][v]){city[v].dis = city[u].dis+map[u][v];city[v].call = city[u].call+team[v];city[v].nPath = city[u].nPath;}else if(city[v].dis == city[u].dis+map[u][v]){city[v].nPath += city[u].nPath;if(city[v].call < city[u].call+team[v])city[v].call = city[u].call+team[v];}}}else return;}}int main(){int n, m, s, t;while(scanf("%d%d%d%d",&n,&m,&s,&t)!=EOF){map.resize(n);for(int i = 0; i < n; ++i)map[i].assign(n, INF);team.resize(n);for(int i = 0; i < n; ++i)scanf("%d",&team[i]);for(int i = 0; i < m; ++i){int a, b, c;scanf("%d%d%d",&a,&b,&c);if(map[a][b] > c){//erease duplicate edge get the minimum onemap[a][b] = map[b][a] = c;}}//Dijkstra(s, t);//printf("%d\n", city[t].dis);printf("%d %d\n", city[t].nPath, city[t].call);}return 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)
- 数学之美番外篇:平凡而又神奇的贝叶斯方法
- ubuntu12.04 编译emacs24.2
- 学习:java设计模式—动态代理模式
- Java 笔试中经常遇到的笔试题
- 号外:2012年三星手机在中国销量翻3倍,位列中国智能手机排行首位,诺基亚跌至第7位
- 1003. Emergency (25)
- 数组中只出现1次的两个数字
- 几种常用数据包结构体
- 安装ntfs-3g后插上移动硬盘仍提示“无法识别的文件系统”,无法自动挂载而只能手动挂载?已解决
- Android Binder机制
- 学习:Java设计模式—Command2
- vector 对象的初始化和操作
- Oracle Spatial-元数据及SDO_GEOMETRY
- 1004. Counting Leaves (30)