POJ1135 Domino Effect
题目:http://poj.org/problem?id=1135
只是求以1为起点的最短路罢了。稍稍判断一下在边上的情况。
多亏提醒:毒数据——n==1!一定要dis [ k ] >= ans!!!
注意输出格式(换行)。
#include<iostream>
#include<cstdio>
#include<cstring>
#define ll long long
using namespace std;
int n,m,head[],xnt,x,y,T;
int hp[],cnt,k1,k2;
ll dis[],z;
double ans;
bool vis[];
struct Edge{
int next,to;
ll w;
Edge(int a=,int b=,ll c=):next(a),to(b),w(c) {}
}edge[];
ll abss(ll k)
{
if(k<)k=-k;
return k;
}
void push(int k)
{
hp[++cnt]=k;
int now=cnt;
while(now>)
{
int tp=(now>>);
if(dis[hp[now]]<dis[hp[tp]])swap(hp[now],hp[tp]);
else break;
now=tp;
}
}
int del()
{
int res=hp[];
hp[]=hp[cnt--];
int now=;
while((now<<)<=cnt)
{
int tp=(now<<);
if(tp<cnt&&dis[hp[tp+]]<dis[hp[tp]])tp++;
if(dis[hp[tp]]<dis[hp[now]])swap(hp[tp],hp[now]);
else break;
now=tp;
}
return res;
}
int main()
{
while(++T)
{
scanf("%d%d",&n,&m);
if(!n&&!m)return ;
memset(dis,,sizeof dis);
memset(head,,sizeof head);
memset(vis,,sizeof vis);
xnt=;ans=;k1=;k2=;
for(int i=;i<=m;i++)
{
scanf("%d%d%lld",&x,&y,&z);
edge[++xnt]=Edge(head[x],y,z);head[x]=xnt;
edge[++xnt]=Edge(head[y],x,z);head[y]=xnt;
}
dis[]=;push();
while(cnt)
{
int k=del();
while(cnt&&vis[k])k=del();
if(vis[k])break;
vis[k]=;
if(dis[k]>=ans)//////////
{
ans=dis[k];k1=k;
}
for(int i=head[k],v;i;i=edge[i].next)
if(!vis[v=edge[i].to]&&dis[k]+edge[i].w<dis[v])
{
dis[v]=dis[k]+edge[i].w;
push(v);
}
}
double c=;
for(int i=;i<=n;i++)
for(int j=head[i],v;j;j=edge[j].next)
if(abss(dis[i]-dis[v=edge[j].to])<edge[j].w&&
(c=max(dis[i],dis[v])+(double)(edge[j].w-abss(dis[i]-dis[v]))/)>ans)
{
ans=c;k1=min(i,v);k2=max(i,v);
}
printf("System #%d\n",T);
if(!k2)
printf("The last domino falls after %.1lf seconds, at key domino %d.\n\n",ans,k1);
else
printf("The last domino falls after %.1lf seconds, between key dominoes %d and %d.\n\n",ans,k1,k2);
}
}
POJ1135 Domino Effect的更多相关文章
- POJ1135 Domino Effect(SPFA)
题目大概是,普通骨牌连接两张关键骨牌,一旦一张关键骨牌倒下与其相邻的普通骨牌也倒下,普通骨牌倒下与其相邻的骨牌也倒下.给出所有有普通骨牌相连的两个关键骨牌之间普通骨牌倒下所需时间,问1号关键骨牌开始倒 ...
- [ACM_图论] Domino Effect (POJ1135 Dijkstra算法 SSSP 单源最短路算法 中等 模板)
Description Did you know that you can use domino bones for other things besides playing Dominoes? Ta ...
- CF 405B Domino Effect(想法题)
题目链接: 传送门 Domino Effect time limit per test:1 second memory limit per test:256 megabytes Descrip ...
- POJ 1135 Domino Effect(Dijkstra)
点我看题目 题意 : 一个新的多米诺骨牌游戏,就是这个多米诺骨中有许多关键牌,他们之间由一行普通的骨牌相连接,当一张关键牌倒下的时候,连接这个关键牌的每一行都会倒下,当倒下的行到达没有倒下的关键牌时, ...
- 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 ...
- UVA211-The Domino Effect(dfs)
Problem UVA211-The Domino Effect Accept:536 Submit:2504 Time Limit: 3000 mSec Problem Description ...
- POJ 1135 Domino Effect (Dijkstra 最短路)
Domino Effect Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 9335 Accepted: 2325 Des ...
- POJ 1135.Domino Effect Dijkastra算法
Domino Effect Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 10325 Accepted: 2560 De ...
- zoj 1298 Domino Effect (最短路径)
Domino Effect Time Limit: 2 Seconds Memory Limit: 65536 KB Did you know that you can use domino ...
随机推荐
- Centos7 docker 常用指令
Docker 运行在 CentOS 7 上,要求系统为64位.系统内核版本为 3.10 以上 一.docker的安装及卸载 1.查看当前系统内核版本: [root@docker ~]# uname - ...
- django - html
1.注释 单行注释: {# #} 多行注释: {%comment%} {%endcomment%} 2.访问元组 不用t[0],要用t.0. 例: {% for t in text %} {{t.0 ...
- 一篇关于oracle psu的文章(转)
Oracle Database PSU/CPU Posted on 2011-07-28 16:27 dbblog 阅读(2569) 评论(0) 编辑 收藏 1. 什么是PSU/CPU?CPU: Cr ...
- STM 软件事务内存——本质是为提高并发,通过事务来管理内存的读写访问以避免锁的使用
对Java程序员来说,我们对面向对象的编程(OOP)自然都是烂熟于胸的,但语言也极大地影响了我们构建面向对象应用程序的方式.(现在的OOP已经和Alan Kay当初创造这个词时候的初衷大不相同了,他的 ...
- 深入了解 Java-Netty高性能高并发理解
https://www.jianshu.com/p/ac7fb5c2640f 一丶 Netty基础入门 Netty是一个高性能.异步事件驱动的NIO框架,它提供了对TCP.UDP和文件传输的支持,作为 ...
- learning shell get script absolute path (3)
Shell get script absolute path [Purpose] Get shell script absolute path [Eevironment] ...
- 网络协议栈学习(一)socket通信实例
网络协议栈学习(一)socket通信实例 该实例摘自<linux网络编程>(宋敬彬,孙海滨等著). 例子分为服务器端和客户端,客户端连接服务器后从标准输入读取输入的字符串,发送给服务器:服 ...
- focusSNS学习笔记
FocusSNS是一个社交类型的网站架构 系统的加载过程 所有的分发都从RouteController开始 @RequestMapping(value={"/", "/h ...
- 深入理解Linux网络技术内幕——内核基础架构和组件初始化
引导期间的内核选项 Linux允许用户把内核配置选项传给引导记录,再有引导记录传给内核,以便对内核进行调整. start_kernel中调用两次parse_args,用于引导期间配置用 ...
- IOS常用代码整理
常用代码整理: 12.判断邮箱格式是否正确的代码: //利用正则表达式验证 -(BOOL)isValidateEmail:(NSString *)email { NSString *emailRege ...