1934

水题 RE了N久  后来发现是无向图

 #include <iostream>
#include<cstring>
#include<algorithm>
#include<stdlib.h>
#include<vector>
#include<cstdio>
#include<queue>
using namespace std;
#define N 2000010
#define INF 0xfffffff
struct node
{
int u,v,next;
double w;
}ed[N<<];
int t,head[N],vis[N],dis[N],pa[N],o[N];
double p[N];
int n,m;
void init()
{
t = ;
memset(head,-,sizeof(head));
}
void add(int u,int v,int w)
{
ed[t].u = u;
ed[t].v = v;
ed[t].w = w;
ed[t].next = head[u];
head[u] = t++;
}
void spfa(int s,int e)
{
memset(vis,,sizeof(vis));
int i;
for(i = ; i <= n ; i++)
{
dis[i] = INF;
p[i] = ;
}
queue<int>q;
dis[s] = ;
p[s] = ;
q.push(s);
while(!q.empty())
{
int u = q.front();
q.pop();
vis[u] = ;
for(i = head[u] ; i != - ; i = ed[i].next)
{
int v = ed[i].v;
double w = ed[i].w;
if(dis[v]>=dis[u]+)
{
if(dis[v]==dis[u]+)
{
if(p[v]<p[u]*w/100.0)
{
p[v] = p[u]*w/100.0;
pa[v] = u;
}
}
else
{
dis[v] = dis[u]+;
p[v] = p[u]*w/100.0;
pa[v] = u;
}
if(!vis[v])
{
vis[v] = ;
q.push(v);
}
}
}
}
printf("%d %lf\n",dis[e],-p[e]);
int x = pa[e],g=;
o[g] = e;
while(x!=s)
{
g++;
o[g] = x;
x = pa[x];
}
g++;
o[g] = s;
for(i = g ; i > ; i--)
printf("%d ",o[i]);
printf("%d\n",o[]);
}
int main()
{
int i;init();
int a,b;
scanf("%d%d",&n,&m);
scanf("%d%d",&a,&b);
for(i = ; i <= m ; i++)
{
int u,v;
double w;
scanf("%d%d%lf",&u,&v,&w);
add(u,v,-w);
add(v,u,-w);
}
spfa(a,b);
return ;
}

1934. Black Spot(spfa)的更多相关文章

  1. 1210. Kind Spirits(spfa)

    1210 简单模版题 敲个spfa还得瞟下模版.. #include <iostream> #include<cstdio> #include<cstring> # ...

  2. 1450. Russian Pipelines(spfa)

    1450 水题 最长路 #include <iostream> #include<cstdio> #include<cstring> #include<alg ...

  3. 1930. Ivan's Car(spfa)

    1930 简单二维 标记一下是上坡还是下坡 #include <iostream> #include<cstdio> #include<cstring> #incl ...

  4. Linux设备管理(二)_从cdev_add说起

    我在Linux字符设备驱动框架一文中已经简单的介绍了字符设备驱动的基本的编程框架,这里我们来探讨一下Linux内核(以4.8.5内核为例)是怎么管理字符设备的,即当我们获得了设备号,分配了cdev结构 ...

  5. windows消息机制详解(转载)

    消息,就是指Windows发出的一个通知,告诉应用程序某个事情发生了.例如,单击鼠标.改变窗口尺寸.按下键盘上的一个键都会使Windows发送一个消息给应用程序.消息本身是作为一个记录传递给应用程序的 ...

  6. 【JUC】JDK1.8源码分析之SynchronousQueue(九)

    一.前言 本篇是在分析Executors源码时,发现JUC集合框架中的一个重要类没有分析,SynchronousQueue,该类在线程池中的作用是非常明显的,所以很有必要单独拿出来分析一番,这对于之后 ...

  7. Quartz2D 编程指南(一)概览、图形上下文、路径、颜色与颜色空间

    概览 图形上下文 路径 颜色与颜色空间 变换 图案 阴影 渐变 透明层 Quartz 2D 中的数据管理 位图与图像遮罩 CoreGraphics 绘制 Layer 0.说明 本篇博客主要是对官方文档 ...

  8. Linux内核--网络栈实现分析(十)--网络层之IP协议(下)

    本文分析基于Linux Kernel 1.2.13 原创作品,转载请标明http://blog.csdn.net/yming0221/article/details/7552455 更多请查看专栏,地 ...

  9. Linux内核--网络栈实现分析(七)--数据包的传递过程(下)

    本文分析基于Linux Kernel 1.2.13 原创作品,转载请标明http://blog.csdn.net/yming0221/article/details/7545855 更多请查看专栏,地 ...

随机推荐

  1. php文字水印和php图片水印实现代码(二种加水印方法)

    文字水印 文字水印就是在图片上加上文字,主要使用gd库的imagefttext方法,并且需要字体文件.效果图如下: $dst_path = 'dst.jpg';//创建图片的实例$dst = imag ...

  2. 【UIScrollView】基本方法+基本描述

    scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(, , , )]; scrollView.backgroundColor = [ ...

  3. Careercup - Google面试题 - 5732809947742208

    2014-05-03 22:10 题目链接 原题: Given a dictionary, and a list of letters ( or consider as a string), find ...

  4. android 开发解密时出现pad block corrupted 错误

    情景:在虚拟机上运行正常的,但是到我的真机上就解密失败,出现pad block corrupted  ,据说是版本原因:我机器是小米3 最新版的android  4.2 出现问题的代码: privat ...

  5. [搜片神器]winform程序自己如何更新自己的方法代码

    DHT抓取程序开源地址:https://github.com/h31h31/H31DHTDEMO 数据处理程序开源地址:https://github.com/h31h31/H31DHTMgr 国外测试 ...

  6. ORA-00257: 归档程序错误。在释放之前仅限于内部连接

    今天发现oracle数据库连不上,报错:ORA-00257: 归档程序错误.在释放之前仅限于内部连接 马上联想到可能是空间满了,一看磁盘目录,果然. 解决方法如下: 1:查看归档日志目录. 登陆账号后 ...

  7. BZOJ 2763: [JLOI2011]飞行路线 spfa dp

    题目链接: http://www.lydsy.com/JudgeOnline/problem.php?id=2763 题解: d[x][kk]表示从s到x用了kk次免费机会的最少花费. 代码: #in ...

  8. ContextLoaderListener作用详解(转)

    ContextLoaderListener监听器的作用就是启动Web容器时,自动装配ApplicationContext的配置信息.因为它实现了ServletContextListener这个接口,在 ...

  9. web.xml中servlet的配置

    <servlet>元素是配置Servlet所用的元素. <servlet-mapping>元素在Servlet和URL样式之间定义一个映射,即servlet类提供一个url,在 ...

  10. 剑指offer--面试题16

    #include<stack> //思路:遍历链表过程中,将各个指针入栈,再出栈进行反转 ListNode* ReverseList(ListNode* pHead) { if(pHead ...