卧槽卧槽卧槽,这道水题竟然让我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. 关于<html>标签里的class= no-js

    最近研究bootstrap的时候,发现了一个案例网站有一段 <html class="no-js"> 然后问了下度娘,找到了一篇大神的文章 里面对这个有很详细的解释: ...

  2. leetcode 100

    100. Same Tree Given two binary trees, write a function to check if they are equal or not. Two binar ...

  3. poj1019_Number_Sequence

    这题目关键是打表,haha[k]数组表示的是S1S2..Sk该串结尾所在的位置.然后用n去找n所在的k值,此时haha[k-1]<n<=haha[k].然后再算出从haha[k]位置到n一 ...

  4. Android窗口为弹出框样式

    1.XML android:theme="@android:style/Theme.Dialog <?xml version="1.0" encoding=&quo ...

  5. ref和out的区别,值类型和引用类型的使用

    今天刚刚明白ref和out的区别,只限于个人理解如有不同请赐教,谢谢 首先我感觉ref和out是针对于值类型来说,以前一直认为是针对于引用类型看下面的一段代码 1.首先结果 i=0:ints[0]=0 ...

  6. (二)、NodeJS 、Express4安装使用方法

    第一步:安装Nodejs 第二步:安装express等部件 1.打开命令窗口,安装express.jade npm install -g express npm install -g express- ...

  7. php小算法总结一(数组重排,进制转换)

    1.两个有序数组组合成一个新的有序数组 <?php $arr1=array(2,5,7,9,12); $arr2=array(3,4,6,8,10,11); function merge_sor ...

  8. 负载均衡 IO etc.

    IO多路复用之epoll总结 ↑2013年8月21日11:49:44 EPOLL下的accept(不错的blog) 关于TCP封包.粘包.半包 linux内核TCP相关参数解释 ↑2013年8月14日 ...

  9. 可以获取get post url 传递参数的统一方法

    public static string objRequest(string requestName) { object obj = HttpContext.Current.Request[reque ...

  10. 部署到iis后,发现无法加载运行CSS文件

    解决方法: 打开或关闭window功能中的Internet信息服务里的万维网服务=>常见HTTP功能=>静态内容