还是蛮简单的一道题,首先dfs一遍,在所有能到达放有干草的洞穴的所有路径中,找出路径上最小伐值的最大值,按这个值由小到大,再来一遍贪心就行了,能放就放,不能放拉倒(也可以理解为,不能放把最前一个删了)。

但是如果题目改为每个洞穴不止一堆干草的话,也是没有问题的,只要在队列上在维护一个小根堆,判断队列中最小的干草堆是否比当前小,小则替换,否则不变。

 const maxn=;
type
node=record
f,t,w:longint;
end;
var n,i,j,m,k,u,v,x,now,ans:longint;
head:array[..] of longint;
b:array[..] of node;
f:array[..] of longint;
p:array[..] of boolean;
a:array[..] of longint;
max:array[..] of longint;
function min(a,b:longint):longint;
begin
if a>b then exit(b)
else exit(a);
end;
procedure insert(num,u,v,x:longint);
begin
b[num].f:=head[u];
b[num].t:=v;
b[num].w:=x;
head[u]:=num;
end;
procedure qs(t,w:longint);
var mid,l,r,tem:longint;
begin
l:=t; r:=w; mid:=max[a[(l+r) shr ]];
repeat
begin
while max[a[l]]<mid do inc(l);
while max[a[r]]>mid do dec(r);
if l<=r then
begin
tem:=a[l];
a[l]:=a[r];
a[r]:=tem;
inc(l);
dec(r);
end;
end;
until l>r;
if t<r then qs(t,r);
if l<w then qs(l,w);
end;
procedure bfs;
var now,nowe,l,r:longint;
begin
fillchar(max,sizeof(max),);
fillchar(p,sizeof(p),true);
l:=; r:=; f[]:=; max[]:=maxn;
while l<=r do
begin
now:=f[l];
nowe:=head[now];
while nowe<> do
begin
if min(max[now],b[nowe].w)>max[b[nowe].t] then
begin
max[b[nowe].t]:=min(max[now],b[nowe].w);
if p[b[nowe].t] then
begin
p[b[nowe].t]:=false;
inc(r);
f[r]:=b[nowe].t;
end;
end;
nowe:=b[nowe].f;
end;
inc(l);
p[now]:=true;
end;
end;
begin
readln(n,m,k);
for i:= to k do
readln(a[i]);
for i:= to m do
begin
readln(u,v,x);
insert(*i-,u,v,x);
insert(*i,v,u,x);
end;
bfs;
qs(,k);
now:=;
while (max[a[now]]=) and (now<=k) do inc(now); //q[1]:=now;
if now<>k+ then ans:=
else begin
writeln();
halt;
end;
for i:=now+ to k do
if max[a[i]]>ans then inc(ans);
writeln(ans);
end.

(转载请注明出处:http://www.cnblogs.com/Kalenda/)

P3380: [Usaco2004 Open]Cave Cows 1 洞穴里的牛之一的更多相关文章

  1. 3381: [Usaco2004 Open]Cave Cows 2 洞穴里的牛之二

    3381: [Usaco2004 Open]Cave Cows 2 洞穴里的牛之二 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 21  Solved ...

  2. Bzoj 3380: [Usaco2004 Open]Cave Cows 1 洞穴里的牛之一

    3380: [Usaco2004 Open]Cave Cows 1 洞穴里的牛之一 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 64  Solved ...

  3. bzoj3383[Usaco2004 Open]Cave Cows 4 洞穴里的牛之四*

    bzoj3383[Usaco2004 Open]Cave Cows 4 洞穴里的牛之四 题意: 平面直角坐标系有n个点,从(0,0)出发,从一个点上可以跳到所有与它横纵坐标距离都≤2的点上,求最少步数 ...

  4. bzoj3381[Usaco2004 Open]Cave Cows 2 洞穴里的牛之二*

    bzoj3381[Usaco2004 Open]Cave Cows 2 洞穴里的牛之二 题意: RMQ问题.序列长度≤25000,问题数≤25000. 题解: 倍增. 代码: #include < ...

  5. [BZOJ3380] [USACO2004 Open]Cave Cows 1 洞穴里的牛之一

    Description ​ 很少人知道其实奶牛非常喜欢到洞穴里面去探险. ​ 洞窟里有N(1≤N≤100)个洞室,由M(1≤M≤1000)条双向通道连接着它们.每对洞室间 至多只有一条双向通道.有K( ...

  6. bzoj3380: [Usaco2004 Open]Cave Cows 1 洞穴里的牛之一(spfa+状压DP)

    数据最多14个有宝藏的地方,所以可以想到用状压dp 可以先预处理出每个i到j的路径中最小权值的最大值dis[i][j] 本来想用Floyd写,无奈太弱调不出来..后来改用spfa 然后进行dp,这基本 ...

  7. P3383: [Usaco2004 Open]Cave Cows 4 洞穴里的牛之四

    这个系列总算是做完了,这是我第一次高效率做完四道题,虽然中间有两道水题,但是第一和第四题还是蛮好的,但是只要能想到思路就很快能打完的. 像这道题,刚开始在想能不能用DP?但是苦于不知道怎么实施,后来又 ...

  8. P3382: [Usaco2004 Open]Cave Cows 3 洞穴里的牛之三

    首先,我们先确定,最长的曼哈顿距离只可能为 x1+y2-(x2+y2) 和 x1-y1-(x2-y2) 所以我们只需要维护四个值, 分别代表 max(x+y) ; max(x-y) ; min(x+y ...

  9. P3381: [Usaco2004 Open]Cave Cows 2 洞穴里的牛之二

    这题..思维上远没有上一题复杂,是一个裸的RMQ..利用倍增就可以解决了. var n,q,i,j,f,t,c:longint; a:array[..,..] of longint; function ...

随机推荐

  1. IE CSS HACK

    IE 属性值 HACK .test { background:blue; /*所有浏览器*/ background:yellow\9; /*所有IE浏览器*/ background:green\0; ...

  2. 【WCF】Silverlight+wcf+自定义用户名密码验证

    本文摘自 http://www.cnblogs.com/virusswb/archive/2010/01/26/1656543.html 在昨天的博文Silverlight3+wcf+在不使用证书的情 ...

  3. php 导出csv

    public function doworks(){        //输出Excel文件头,可把user.csv换成你要的文件名        header('Content-Type: appli ...

  4. sublineText

    https://github.com/thinkpixellab/flatland { "color_scheme": "Packages/Theme - Flatlan ...

  5. 使用Git上传本地项目代码到github

    前提:(1)ssh密钥(让本地与git链接) &  (2)装好gitbash 1.git中创建好库 2.文件夹中输入:git init (出现隐藏的.git文件) 3.git remote a ...

  6. PHP超时处理全面总结(转)

    [ 概述 ] 在PHP开发中工作里非常多使用到超时处理到超时的场合,我说几个场景: 1. 异步获取数据如果某个后端数据源获取不成功则跳过,不影响整个页面展现 2. 为了保证Web服务器不会因为当个页面 ...

  7. PPTP --VPN配置

    测试:1:根据上面的步骤4,在路由器里查看状态:2:手机热点,共享给你电脑,电脑拨号,进行测试.   参考:http://jingyan.baidu.com/article/90808022ddd6a ...

  8. 七个你可能不了解的CSS单位

    我们很容易无法摆脱的使用我们所熟悉的CSS技术,当新的问题出现,这样会使我们处于不利的地位. 随着Web继续的发展,对新的解决方案的需求也会继续增大.因此,作为网页设计师和前端开发人员,我们别无选择, ...

  9. 1.1Android系统架构

    Android目前是一个非常优秀的嵌入式系统,具有非常完善的系统架构! Android系统架构分为4层:(从下至上) 第一层:Linux内核层,包括驱动程序以及管理内存.进程.电源等资源的程序 因为A ...

  10. protobuf的使用

    Protobuf的安装 正确安装方法: [http://blog.csdn.net/guoyilongedu/article/details/17093811] linux下安装protobuf教程+ ...