点我看题目

题意 : 一个新的多米诺骨牌游戏,就是这个多米诺骨中有许多关键牌,他们之间由一行普通的骨牌相连接,当一张关键牌倒下的时候,连接这个关键牌的每一行都会倒下,当倒下的行到达没有倒下的关键牌时,这个关键牌也会倒下,然后与这个关键牌相连接的所有行都会倒下,每一行有两个端点也就是两个关键牌,可以从任意一个端点开始倒下,也可以从两个端点同时开始倒下,从第一张骨牌开始倒,最后倒下的牌的位置以及时间。

思路 : 先利用Dijkstra求出每张关键牌倒下的时间time[i],即求出第一张关键牌到其他关键牌的最短路径,然后求出众最短路径中最大的那个,即为time1。再计算每一行倒下的时间,每一行的两个关键牌的位置设为i,j,则这一行倒下的时间为(time[i]+time[j]+Edge[i][j])/2.0,找到最大值即为time2。求出time1,time2的最大值,即为我们所求。

因为最后那个%.1lf的问题还错了一遍,交C++即可。

//Domino Effect
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <iostream>
#include <algorithm> using namespace std ; const int INF = ;
const int maxn = ;
int n, m;
int Edge[maxn][maxn] ;
bool vis[maxn] ;
int timee[maxn] ; void dijkstra()
{
for(int i = ; i <= n ; i++)
{
timee[i] = Edge[][i] ;
vis[i] = false ;
}
timee[] = ;
vis[] = true ;
for(int i = ; i < n ; i++)
{
int minn = INF , u = ;
for(int j = ; j <= n ; j++)
{
if(!vis[j] && timee[j] < minn)
{
u = j ;
minn = timee[j] ;
}
}
vis[u] = true ;
for(int k = ; k <= n ; k++)
{
if(!vis[k] && Edge[u][k] < INF && timee[u] + Edge[u][k] < timee[k])
timee[k] = timee[u] + Edge[u][k] ;
}
}
double time1 = -999999999.0 ;
int flag ;
for(int i = ; i <= n ; i++)
{
if(timee[i] > time1)
time1 = timee[i],flag = i ;
}
double time2 = -9999999999.0 ;
int pos1,pos2 ;
for(int i = ; i <= n ; i++)
{
for(int j = ; j <= n ; j++)
{
double temp = (timee[i] + timee[j] + Edge[i][j])/2.0 ;
if(Edge[i][j] < INF && temp > time2)
{
time2 = temp ;
pos1 = i ;
pos2 = j ;
}
}
}
if(time1 < time2)
printf("The last domino falls after %.1lf seconds, between key dominoes %d and %d.\n\n",time2,pos1,pos2) ;
else
printf("The last domino falls after %.1lf seconds, at key domino %d.\n\n",time1,flag) ;
}
int main()
{
int cas = ;
while(~scanf("%d %d",&n,&m))
{
if(n == && m == )
break ;
int u,v ,w ;
for(int i = ; i <= n ; i++)
for(int j = ; j <= n ; j++)
Edge[i][j] = INF ;
for(int i = ; i < m ; i++)
{
scanf("%d %d %d",&u,&v,&w) ;
Edge[u][v] = w ;
Edge[v][u] = w ;
}
printf("System #%d\n",cas++) ;
dijkstra() ;
}
return ;
}

POJ 1135 Domino Effect(Dijkstra)的更多相关文章

  1. POJ 1135 -- Domino Effect(单源最短路径)

     POJ 1135 -- Domino Effect(单源最短路径) 题目描述: 你知道多米诺骨牌除了用来玩多米诺骨牌游戏外,还有其他用途吗?多米诺骨牌游戏:取一 些多米诺骨牌,竖着排成连续的一行,两 ...

  2. POJ 1135 Domino Effect (spfa + 枚举)- from lanshui_Yang

    Description Did you know that you can use domino bones for other things besides playing Dominoes? Ta ...

  3. POJ 1135 Domino Effect (Dijkstra 最短路)

    Domino Effect Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 9335   Accepted: 2325 Des ...

  4. POJ 1135.Domino Effect Dijkastra算法

    Domino Effect Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 10325   Accepted: 2560 De ...

  5. [POJ] 1135 Domino Effect

    Domino Effect Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 12147 Accepted: 3046 Descri ...

  6. 「POJ 1135」Domino Effect(dfs)

    BUPT 2017 Summer Training (for 16) #3G 题意 摆好的多米诺牌中有n个关键牌,两个关键牌之间有边代表它们之间有一排多米诺牌.从1号关键牌开始推倒,问最后倒下的牌在哪 ...

  7. POJ 1797 Heavy Transportation(Dijkstra)

    http://poj.org/problem?id=1797 题意 :给出N个城市M条边,每条边都有容量值,求一条运输路线使城市1到N的运输量最大. 思路 :用dijkstra对松弛条件进行变形.解释 ...

  8. 「日常训练」「小专题·图论」Domino Effect(1-5)

    题意 分析 这题几乎就是一条dijkstra的问题.但是,如何考虑倒在中间? 要意识到这题求什么:单源最短路的最大值.那么有没有更大的?倒在中间有可能会使它更大. 但是要注意一个问题:不要把不存在的边 ...

  9. POJ1135 Domino Effect(SPFA)

    题目大概是,普通骨牌连接两张关键骨牌,一旦一张关键骨牌倒下与其相邻的普通骨牌也倒下,普通骨牌倒下与其相邻的骨牌也倒下.给出所有有普通骨牌相连的两个关键骨牌之间普通骨牌倒下所需时间,问1号关键骨牌开始倒 ...

随机推荐

  1. [记录]java.math.biginteger cannot be cast to java.lang.long

    可以直接使用BigInteger类型进行接收, BigInteger id = (BigInteger)QueryRunner(conn,"SELECT LAST_INSERT_ID&quo ...

  2. MySQL之事务处理、存储过程

    事务处理 动作 开始事务:start transaction 提交事务:commit 回滚事务:rollback 设置自动提交:set autocommit 1 | 0 autoCommit系统默认是 ...

  3. (原创)openvswitch实验连载1-fedora 17下安装openvswitch

    1 软件安装 1.1测试环境和网络拓朴 大部分朋友估计也没有一个真实环境来完全整个的测试,所以我也是使用了在一台PC机上使用Vmware Workstation的方式来进行实验.总体结构是在PC机上安 ...

  4. activiti源码解读之心得整编

    TaskService.completeTask()的执行内幕是啥? activiti采取了command模式,completeTask会被包装成一个CompleteTaskCmd,一个Cmd执行的时 ...

  5. 标签的innerHTML属性和html()

    在新公司开发编码的时候,经常写js代码:有时候就需要往某个标签里添加一些html脚本或者要拿到某个标签里的html脚本,那么就会用到innerHTML和html. 1.innerHTML属性 w3sc ...

  6. 20160503-spring入门2

    使用Spring需要的jar 到http://www.springsource.org/download下载spring,然后进行解压缩,在解压目录中找到下面jar文件,拷贝到类路径下 dist\sp ...

  7. Windows8.1下PHP环境配置(PHP5.6、Apache2.4、MySql5.6)

    Step0 安装准备(均为64-bit版本) 下载php "Non Thread Safe"是IIS专用的,"Thread Safe"是Apache服务器用的. ...

  8. C#当中的泛型和java中的对比

    1.C#中的泛型 先写一个Demo: namespace generic {         public class Program         {                 static ...

  9. ubuntu系统安装jdk

    1,首先到jdk官网下载jdk. 2,然后再把下载下来的jdk包(jdk-8u20-linux-i586.tar.gz),然后打开shell,进入超级管理员权限,进入刚才下载的目录(cd 目录名),然 ...

  10. (七)Hibernate 映射继承

    所有项目导入对应的hibernate的jar包.mysql的jar包和添加每次都需要用到的HibernateUtil.java 第一节:每个具体类对应一个表 Image.java package co ...