nyoj 307
/*这是一道最短路变形题
从每个有藏宝的地方为起点 求到各个点的可以的最大重量,相当于求出了从出口 到 一个藏宝点 所
允许的最大重量,把所有藏宝点的按重量 排序(从小到大)先到最小的藏宝点带上 宝物 再去次大
*/
#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的更多相关文章
- NYOJ 1007
在博客NYOJ 998 中已经写过计算欧拉函数的三种方法,这里不再赘述. 本题也是对欧拉函数的应用的考查,不过考查了另外一个数论基本定理:如何用欧拉函数求小于n且与n互质所有的正整数的和. 记eule ...
- NYOJ 998
这道题是欧拉函数的使用,这里简要介绍下欧拉函数. 欧拉函数定义为:对于正整数n,欧拉函数是指不超过n且与n互质的正整数的个数. 欧拉函数的性质:1.设n = p1a1p2a2p3a3p4a4...pk ...
- HTTP 的重定向301,302,303,307(转)
HTTP 的重定向301,302,303,307(转) (2012-12-11 11:55:04) 转载▼ 标签: 杂谈 分类: 网络 301 永久重定向,告诉客户端以后应从新地址访问.302 作为H ...
- HTTP状态码302、303和307的故事
今日读书,无法理解HTTP302.303.307状态码的来龙去脉,决定对其做深究并总结于本文. <HTTP权威指南>第3章在讲解30X状态码时,完全没有讲清楚为什么要有 ...
- NYOJ 333
http://www.cppblog.com/RyanWang/archive/2009/07/19/90512.aspx?opt=admin 欧拉函数 E(x)表示比x小的且与x互质的正整数的个数. ...
- http返回码301、302、307、305含义和区别
301永久重定向,302暂时移动,seo对301和302的处理不一样: 301和302会出现数据丢失问题,重定向后请求数据丢失: 307临时重定向,数据不会丢失:
- NYOJ 99单词拼接(有向图的欧拉(回)路)
/* NYOJ 99单词拼接: 思路:欧拉回路或者欧拉路的搜索! 注意:是有向图的!不要当成无向图,否则在在搜索之前的判断中因为判断有无导致不必要的搜索,以致TLE! 有向图的欧拉路:abs(In[i ...
- nyoj 10 skiing 搜索+动归
整整两天了,都打不开网页,是不是我提交的次数太多了? nyoj 10: #include<stdio.h> #include<string.h> ][],b[][]; int ...
- 简答哈希实现 (nyoj 138 找球号2)
例题链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=138 代码目的:复习哈希用 代码实现: #include "stdio.h&qu ...
随机推荐
- JSP-Runoob:JSP 异常处理
ylbtech-JSP-Runoob:JSP 异常处理 1.返回顶部 1. JSP 异常处理 当编写JSP程序的时候,程序员可能会遗漏一些BUG,这些BUG可能会出现在程序的任何地方.JSP代码中通常 ...
- Kaka's Matrix Travels
http://poj.org/problem?id=3422 #include <stdio.h> #include <algorithm> #include <stri ...
- codevs1486愚蠢的矿工(树形dp)
1486 愚蠢的矿工 时间限制: 1 s 空间限制: 128000 KB 题目描述 Description Stupid 家族得知在HYC家的后花园里的中央花坛处,向北走3步,向西走3步, ...
- 解决Sublime Text 3 的 Package Control 启动失败问题
今天在使用Sublime Text的时候,需要了这样的情况 遇到这个问题的时候 我是这样解决的 一. 首先 找到 Package Control的下载地址1 下载地址2.将下载下 ...
- 记一次MySQL索引优化
两张表是主(CHECK_DRAWINGS)从(CHECK_DRAWINGS_IMG)关系. CHECK_DRAWINGS,主表数据 3591条. SELECT COUNT(*) FROM CHECK_ ...
- Django总结三
回顾: - 装饰器 模板 - def wrapper(func): def inner(*args, **args): 执行被执行函数之前的操作 res = func(*args, **args) 执 ...
- 【POJ3280/洛谷2890】[Usaco2007 Open Gold]Cheapest Palindrome(动态规划)
题目: POJ3280 洛谷2980 分析: 首先,考虑只可以加字的情况 设\(s[i]\)表示第\(i\)个字符,\(add[i]\)表示加上一个字母\(i\)的花费,\(dp[i][j]\)表示把 ...
- Servlet到Servlet的请求转发与重定向的区别
Servlet跳转到另一个Servlet中: request.getRequestDispatcher().forward();代表默认的是post方法,即在被跳转的Servlet的doPost()方 ...
- 【Leetcode146】LRU Cache
问题描述: 设计一个LRU Cache . LRU cache 有两个操作函数. 1.get(key). 返回cache 中的key对应的 val 值: 2.set(key, value). 用伪代码 ...
- [转]android-学习笔记之按钮事件
本文转载自: http://zhangkun716717-126-com.iteye.com/blog/761080 前备知识: 1.需要了解怎么得到界面元素. 那么如何得到界面元素呢?在界面配置文件 ...