/*这是一道最短路变形题

从每个有藏宝的地方为起点 求到各个点的可以的最大重量,相当于求出了从出口 到 一个藏宝点 所

 允许的最大重量,把所有藏宝点的按重量 排序(从小到大)先到最小的藏宝点带上 宝物 再去次大

 */

#include<stdio.h>

#include<stdlib.h>

#include<queue>

#include<string.h>

using namespace std;

const int N =16000;

struct node {

int u,v,w,next;

}bian[N*2];

int head[8100],yong,n;

void addedge(int u,int v,int w) {//建邻接表

bian[yong].u=u;

bian[yong].v=v;

bian[yong].w=w;

bian[yong].next=head[u];//bian[yong].next用来记录上一个边的index

head[u]=yong++;//head[u]代表当前边的index

}

int Min(int a,int b) {

return a>b?b:a;

}

int cmp(const void *a,const void *b) {//排序

return *(int *)a-*(int *)b;

}

int maxvalue_start(int start) {//相当于当前点到1可以通过的最大宝物

int visit[8100],dis[8100];

int i;

memset(dis,0,sizeof(dis));//用来储存从start开始所能得到的最大宝物数目

memset(visit,0,sizeof(visit));//标记

 visit[start]=1;

 dis[start]=1000000000;

 while(start!=1){//如果1这个点就是从start开始的可以得到的最大宝物就结束while循环

for(i=head[start];i!=-1;i=bian[i].next) {

int  v=bian[i].v;

int w=bian[i].w;

if(!visit[v]&&dis[v]<Min(dis[start],w))//求所有与当前点相连的点可以得到的最大宝物

dis[v]=Min(dis[start],w);

}

int mmax=0;

for(i=1;i<=n;i++)

if(!visit[i]&&mmax<dis[i]) {//从最大的可以通过的宝物开始遍历相连的边

mmax=dis[i];

start=i;

}

visit[start]=1;

}

 return dis[1];//返回最大宝物数

}

int main() {

int m,j,w,i,k,t,maxv[8100],total,loc[8100];

while(scanf("%d%d%d%d",&n,&m,&k,&w)!=EOF) {

memset(head,-1,sizeof(head));

yong=0;

for(i=0;i<k;i++)

scanf("%d",&loc[i]);

while(m--) {

scanf("%d%d%d",&i,&j,&t);

addedge(i,j,t);//加双向边

addedge(j,i,t);//

}

for(i=0;i<k;i++) 

       maxv[i]=maxvalue_start(loc[i]);//求每个有宝物的点到出口能够拿到的最大宝藏数目

qsort(maxv,k,sizeof(maxv[0]),cmp);//排序

 total=0;

for(i=0;i<k;i++)//先到最小的藏宝点带上 宝物 再去次大 

if(maxv[i]>=(total+1)*w)

total++;

printf("%d\n",total);

}

return 0;

}

nyoj 307的更多相关文章

  1. NYOJ 1007

    在博客NYOJ 998 中已经写过计算欧拉函数的三种方法,这里不再赘述. 本题也是对欧拉函数的应用的考查,不过考查了另外一个数论基本定理:如何用欧拉函数求小于n且与n互质所有的正整数的和. 记eule ...

  2. NYOJ 998

    这道题是欧拉函数的使用,这里简要介绍下欧拉函数. 欧拉函数定义为:对于正整数n,欧拉函数是指不超过n且与n互质的正整数的个数. 欧拉函数的性质:1.设n = p1a1p2a2p3a3p4a4...pk ...

  3. HTTP 的重定向301,302,303,307(转)

    HTTP 的重定向301,302,303,307(转) (2012-12-11 11:55:04) 转载▼ 标签: 杂谈 分类: 网络 301 永久重定向,告诉客户端以后应从新地址访问.302 作为H ...

  4. HTTP状态码302、303和307的故事

        今日读书,无法理解HTTP302.303.307状态码的来龙去脉,决定对其做深究并总结于本文.       <HTTP权威指南>第3章在讲解30X状态码时,完全没有讲清楚为什么要有 ...

  5. NYOJ 333

    http://www.cppblog.com/RyanWang/archive/2009/07/19/90512.aspx?opt=admin 欧拉函数 E(x)表示比x小的且与x互质的正整数的个数. ...

  6. http返回码301、302、307、305含义和区别

    301永久重定向,302暂时移动,seo对301和302的处理不一样: 301和302会出现数据丢失问题,重定向后请求数据丢失: 307临时重定向,数据不会丢失:

  7. NYOJ 99单词拼接(有向图的欧拉(回)路)

    /* NYOJ 99单词拼接: 思路:欧拉回路或者欧拉路的搜索! 注意:是有向图的!不要当成无向图,否则在在搜索之前的判断中因为判断有无导致不必要的搜索,以致TLE! 有向图的欧拉路:abs(In[i ...

  8. nyoj 10 skiing 搜索+动归

    整整两天了,都打不开网页,是不是我提交的次数太多了? nyoj 10: #include<stdio.h> #include<string.h> ][],b[][]; int ...

  9. 简答哈希实现 (nyoj 138 找球号2)

    例题链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=138 代码目的:复习哈希用 代码实现: #include "stdio.h&qu ...

随机推荐

  1. MSP430 PIN 操作寄存器

    1.P口端口寄存器: (1).PxDIR   输入/输出方向寄存器 (0:输入模式    1:输出模式) (2).PxIN    输入寄存器 输入寄存器是只读寄存器,用户不能对其写入,只能通过读取该寄 ...

  2. jquery中对于为一组标签赋予点击事件

    可以用each,但是each不能对动态的元素进行事件的绑定, 不过,其实也很简单,只需要获取所有的标签集,然后用动态绑定的方法,比如live进行绑定就可以了. 有时候,其实不难,只是自己想的太过复杂. ...

  3. SpringMvc快速入门之使用篇

    文章是为了结合工作需求来介绍springmvc,本文章只是切合实际的开发的场景对springmvc进行快速的入门介绍. 本篇文章不会对原理进行讲解.因为个人觉得有些对于新技术方面可以分为一下几个层次. ...

  4. python中的深拷贝和浅拷贝(面试题二)

    一.浅拷贝 定义:浅拷贝只是对另外一个变量的内存地址的拷贝,这两个变量指向同一个内存地址的变量值. 浅拷贝的特点: 公用一个值: 这两个变量的内存地址一样: 对其中一个变量的值改变,另外一个变量的值也 ...

  5. [转]linux uniq 命令详解

    转自:http://blog.csdn.net/tianmohust/article/details/6997683 uniq 命令   文字 uniq 是LINUX命令 用途 报告或删除文件中重复的 ...

  6. 实现div毛玻璃背景

    毛玻璃效果 ios里毛玻璃效果的使用非常多,本文介绍一个实现div毛玻璃背景的方法 CSS3 Filter CSS3的Filter主要用在图像的特效处理上,默认值为none,还有以下备选项:   1. ...

  7. ffmpeg rtp时间戳

    ffmpeg rtp时间戳 ffmpeg  c  一.介绍 在ffmpeg中,每帧都会存在一个pts用来表示该帧图像在视频流中的位置.而在多路流(比如视频.音频)时,往往需要进行多媒体的同步,使得画面 ...

  8. JS高级——递归

    基本概念 1.在函数内调用函数自己,就是递归 2.没有递归结束条件的递归,就是死递归 3.化归思想,将一个问题由难化易,由繁化简,由复杂化简单的过程称为化归,它是转化和归结的简称. 基本使用 1.计算 ...

  9. [Windows Server 2008] Ecshop安全设置

    ★ 欢迎来到[护卫神·V课堂],网站地址:http://v.huweishen.com ★ 护卫神·V课堂 是护卫神旗下专业提供服务器教学视频的网站,每周更新视频. ★ 本节我们将带领大家:ECSHO ...

  10. Java_Web三大框架之Struts2

    今天正式接触Java_Web三大框架之Struts2框架.对于初学者来说,先来了解什么是框架技术: 一.“框架技术”帮我们更快更好地构建程序: 1.是一个应用程序的半成品 2.提供可重用的公共结构 3 ...