卧槽卧槽卧槽,这道水题竟然让我WA了两遍!!评测系统卡了然后手贱又提交了一次,然后就悲催了呜呜。。
把与不能回家但牛棚完好的牛相邻的牛棚赋值为不能走(false),可以证明,如果该牛回不了家,则周围一圈的牛要么牛棚坏了,要么也是一样回不了,所以结果就是,该牛周围的牛都回不了牛庄,所以是一道贪心题,最后来一遍bfs搜索有多少牛可以回去,总数一减就是答案了。
 type
node=record
f,t:longint;
end;
var p,c,n,i,j,f,t,sum:longint;
head:array[..] of longint;
can:array[..] of boolean;
b:array[..] of node;
q:array[..] of longint;
procedure insert(m,f,t:longint);
begin
b[m].f:=head[f];
b[m].t:=t;
head[f]:=m;
end;
procedure delete(j:longint);
var nowe:longint;
begin
nowe:=head[j];
while nowe<> do
begin
can[b[nowe].t]:=false;
nowe:=b[nowe].f;
end;
end;
procedure bfs;
var l,r,now,nowe:longint;
begin
l:=; r:=; q[]:=; can[]:=false;
while l<=r do
begin
now:=q[l];
nowe:=head[now];
while nowe<> do
begin
if can[b[nowe].t] then begin
//writeln(b[nowe].t);
can[b[nowe].t]:=false;
inc(r);
//inc(sum);
q[r]:=b[nowe].t;
end;
nowe:=b[nowe].f;
end;
inc(l);
end;
sum:=r;
end;
begin
readln(p,c,n);
fillchar(can,sizeof(can),true);
for i:= to c do
begin
readln(f,t);
if f=t then continue;
insert(*i-,f,t);
insert(*i,t,f);
end;
for i:= to n do
begin
readln(j);
can[j]:=false;
delete(j);
end;
bfs;
writeln(p-sum);
end.
 type
node=record
f,t:longint;
end;
var p,c,n,i,j,f,t,sum:longint;
head:array[..] of longint;
can:array[..] of boolean;
b:array[..] of node;
q:array[..] of longint;
procedure insert(m,f,t:longint);
begin
b[m].f:=head[f];
b[m].t:=t;
head[f]:=m;
end;
procedure delete(j:longint);
var nowe:longint;
begin
nowe:=head[j];
while nowe<> do
begin
can[b[nowe].t]:=false;
nowe:=b[nowe].f;
end;
end;
procedure bfs;
var l,r,now,nowe:longint;
begin
l:=; r:=; q[]:=; can[]:=false;//sum:=1;
while l<=r do
begin
now:=q[l];
nowe:=head[now];
while nowe<> do
begin
//if (b[nowe].t=4) and (can[b[nowe].t]) then writeln('sb');
if can[b[nowe].t] then begin
//writeln(b[nowe].t);
can[b[nowe].t]:=false;
inc(r);
//inc(sum);
q[r]:=b[nowe].t;
end;
nowe:=b[nowe].f;
end;
inc(l);
end;
sum:=r;
end;
begin
readln(p,c,n);
fillchar(can,sizeof(can),true);
for i:= to c do
begin
readln(f,t);
if f=t then continue;
insert(*i-,f,t);
insert(*i,t,f);
end;
for i:= to n do
begin
readln(j);
can[j]:=false;
delete(j);
end;
//for i:=1 to p do
//if can[i] then writeln('t')
//else writeln('f');
bfs;
writeln(p-sum);
end.

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

P1574: [Usaco2009 Jan]地震损坏Damage的更多相关文章

  1. 1574: [Usaco2009 Jan]地震损坏Damage

    1574: [Usaco2009 Jan]地震损坏Damage Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 425  Solved: 232[Subm ...

  2. BZOJ 1574: [Usaco2009 Jan]地震损坏Damage

    Description 农夫John的农场遭受了一场地震.有一些牛棚遭到了损坏,但幸运地,所有牛棚间的路经都还能使用. FJ的农场有P(1 <= P <= 30,000)个牛棚,编号1.. ...

  3. [BZOJ1574] [Usaco2009 Jan]地震损坏Damage(贪心 + dfs)

    传送门 告诉你一些点不能到达1,由于是双向边,也就是1不能到达那些点 那么从1开始dfs,如果当前点能到达不能到达的点,那么当前点就是损坏的. #include <cstdio> #inc ...

  4. 【BZOJ】1574: [Usaco2009 Jan]地震损坏Damage

    [算法]搜索 [题意]给定无向图,现在可能有一些点已经被删除,只给出信息是c个点不能到达结点1,求最少的不能到达结点1的个数(含已删除点). [题解] 真是一道奥妙重重的题目. 每个点不能到达结点1, ...

  5. bzoj1574 [Usaco2009 Jan]地震损坏Damage

    传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=1574 [题解] 贪心把report的点的旁边所有点破坏即可. # include <s ...

  6. bzoj 1574: [Usaco2009 Jan]地震损坏Damage【dfs】

    和March的那道不一样,只是非常单纯的带着贪心的dfs 首先一个点被隔断,与它相邻的所有点也会被隔断,打上删除标记,从1dfs即可 #include<iostream> #include ...

  7. [bzoj1574][Usaco2009 Jan]地震损坏Damage_dfs

    地震损坏Damage bzoj-1574 Usaco-2009 Jan 题目大意:题目链接. 注释:略. 想法: 显然对于每一个report点,和它直接相连的点都不可能到达1.我们将它打上标记. 然后 ...

  8. bzoj 1576: [Usaco2009 Jan]安全路经Travel 树链剖分

    1576: [Usaco2009 Jan]安全路经Travel Time Limit: 10 Sec  Memory Limit: 64 MB Submit: 665  Solved: 227[Sub ...

  9. BZOJ3396: [Usaco2009 Jan]Total flow 水流

    3396: [Usaco2009 Jan]Total flow 水流 Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 45  Solved: 27[Sub ...

随机推荐

  1. 【转】DDR3详解(以Micron MT41J128M8 1Gb DDR3 SDRAM为例)

    这两天正在学习FPGA如何控制DDR3的读写,找到一篇个人感觉比较有意义的文章,可以对DDR的内部结构有一个初步的了解.原文出处:http://blog.chinaunix.net/uid-28458 ...

  2. ASP.NET的SEO: 服务器控件背后——SEO友好的Html和JavaScript

    本系列目录 假设你需要从一个页面转向其他页面,下面有很多种方式,你是如何选择的呢?你能清晰的说明理由么?         <%--链接的表现形式--%>        <asp:Hy ...

  3. sed的惯常用法

    1:注释掉某一行这个经常会遇到的,把配置文件里某一行注释掉.让他不起作用.sed -i -e ’121 s/^/#/’ /usr/local/apache2/conf/httpd.conf上面一行命令 ...

  4. C# 常用小技巧

    int? id 表示id是可以为null的整型 跟Nullable<int> id 是一样的 id ?? 1等于 id==null?1:id;

  5. Django搭建及源码分析(一)

    一.关于Django以下两个站点,在使用方面有详细说明. http://www.nowamagic.net/academy/part/13/286 http://www.w3cschool.cc/dj ...

  6. jquery 获取元素坐标

    不错哦! 原文地址:http://jianzhong5137.blog.163.com/blog/static/9829049201182295833503/ 绝对X,Y坐标,可以用offset()方 ...

  7. Ueditor防止代码自动清除

    Ueditor功能真的很牛逼,可也有让人悲催的地方,尤其是自动清除代码,会将你默认的div标签改成p,挺让人闹心的,不过Ueditor的开发人员还是满热心的,搜遍网上无答案的时候,问了下他们,解决了 ...

  8. Android VideoView简单播放视频

    给Android VideoView一个文件目录,就可以直接播放智能设备中的视频文件,现在以播放事先用手机拍好并重命名的视频文件test.mp4为例.(1) 需要在布局文件中写一个ViedoView: ...

  9. ASP.NET MVC5学习笔记之Action参数模型绑定值提供体系

    这一节我们关注模型绑定的值提供体系,先来介绍几个重要的接口 一. IValueProvider,接口定义如下: public interface IValueProvider { bool Conta ...

  10. VLC 重新编译第三方库的预编译包contrib

    VLC的引用了很多开源的第三方库,均放到VLC目录下的contrib中(本来开始编译是2.1.x以上版本,以前或以后可能会变化),在Windows版本编译中,contrib文件夹中仅仅下载VLC官网上 ...