ZOJ 1298 Dijkstra
来源:互联网 发布:python getopt 详解 编辑:程序博客网 时间:2024/06/10 06:13
计算多米诺骨牌推倒推倒的时间。
这里先用Dijkstra计算单源最短路径,然后在其他不在该路径中的边所需要推倒的时间,time[i] + time[j] + edge[i][j]/2即可。这里要枚举
#include <cstdio>#include <iostream>#include <cstring>using namespace std;#define NLEN 510#define INF 1000000int edge[NLEN][NLEN];int _time[NLEN];int s[NLEN];void dijkstra(int n, int m) {memset(s, 0, sizeof(s));memset(_time, 0, sizeof(_time));for(int i = 0; i < n; i++) {_time[i] = edge[0][i];}s[0] = 1;_time[0] = 0;for(int i = 1; i < n; i++) {int min = INF;int imin = 0;for(int j = 0; j < n; j++) {if(!s[j] && _time[j] < min) {imin = j;min = _time[j];}}s[imin] = 1;for(int j = 0; j < n; j++) {if(!s[j] && edge[imin][j] < INF && _time[j] > _time[imin] + edge[j][imin]) {_time[j] = _time[imin] + edge[j][imin];}}}double max_time1 = -INF;int pos;for(int i = 0; i < n; i++) {if(_time[i] > max_time1) {max_time1 = _time[i];pos = i;}}double max_time2 = -INF;int pos1, pos2;for(int i = 0; i < n; i++) {for(int j = 0; j < n; j++) {if((_time[i]+_time[j]+edge[i][j])/2.0 > max_time2 && edge[i][j] < INF) {max_time2 = (_time[i] + _time[j] + edge[i][j])/2.0;pos1 = i;pos2 = j;}}}if(max_time1 >= max_time2) {printf("The last domino falls after %.1lf seconds, at key domino %d.\n\n", max_time1, pos+1);}else {printf("The last domino falls after %.1lf seconds, between key dominoes %d and %d.\n\n", max_time2, pos1+1, pos2+1);}}int main() {int n, m;int cse = 1;while(scanf("%d%d", &n, &m), n!=0) {for(int i = 0; i < n; i++) {for(int j = 0; j < n; j++) {edge[i][j] = INF;}}for(int i = 0; i < m; i++) {int x, y, t;scanf("%d%d%d", &x, &y, &t);x--;y--;edge[x][y] = edge[y][x] = t;}printf("System #%d\n", cse++);dijkstra(n, m);}return 0;}
- ZOJ 1298 Dijkstra
- ZOJ 1298 Domino Effect【dijkstra】
- ZOJ Dijkstra
- zoj 1298 Domino Effect (Dijkstra)
- ZOJ 1891 Subway (dijkstra)
- ZOJ 3862 Intersection (dijkstra)
- ZOJ 1221Risk_Floyd - Dijkstra
- POJ 1135/ZOJ 1298 Domino Effect (最短路径dijkstra)
- TOJ 1883 ZOJ 1298 POJ 1135 Domino Effect / Dijkstra
- ZOJ 1952 Heavy Cargo (dijkstra )
- ZOJ 2504 Help John! (dijkstra)
- zoj 2504 Help John!(Dijkstra~~)
- zoj 2750 dijkstra()
- ZOJ 1904 Frogger 另一种Dijkstra
- ZOJ--1655--Transport Goods【dijkstra】
- zoj 1655 Transport Goods Dijkstra
- ZOJ 3946 Highway Project(Dijkstra)
- ZOJ 1082 Stockbroker Grapevine (dijkstra方法)
- 如何制作cab包(解决不能注册的问题)
- 狄利克雷过程(dirichlet process )的五种理解
- OO ALV(一屏幕显示多个ALV, 双击事件)例子
- 默认角色CONNECT 和RESOURCE角色具有哪些权限
- hdu1247Hat’s Words(字典树---判断单词有无组合现象)
- ZOJ 1298 Dijkstra
- 程序员面试、算法研究、编程艺术、红黑树、数据挖掘5大经典原创系列集锦与总结
- Dirichlet distribution的两种理解方式
- Calendar.DAY_OF_MONTH
- Thinkphp常用常量
- Windows下NDK开发环境的搭建(Cygwin+Android-SDK+NDK)
- weblogic server 启动脚本
- 看懂信息检索和网络数据挖掘领域论文的必备知识总结
- Xcode socket