码迷,mamicode.com
首页 > 其他好文 > 详细

BZOJ 1648 Cow Picnic 奶牛野餐

时间:2017-09-08 20:28:59      阅读:155      评论:0      收藏:0      [点我收藏+]

标签:for   set   struct   include   printf   oid   void   zoj   nod   

作为傻逼的我,一开始就想到了DFS的正解。但是看了看数据范围 DFS的时间复杂度是(K+E)*NoW K是点 E是边 NOW是奶牛数量
掂量了下 觉得过不去,苦思冥想之后。看了下题解,卧槽这么简单吗? 发现自己看错了,把K+E 看成了K*E,惭愧惭愧~

 

 1 #include <cstdio>
 2 #include <algorithm>
 3 #include <cstring>
 4  
 5 #define up(a,b,c) for(int c = a;c<=b;++c)
 6 #define mem(a,b) memset(a,b,sizeof(a))
 7  
 8 struct node{
 9     int u,v,next;
10     node(){}
11     node(int _u,int _v,int _next){
12         u = _u;
13         v = _v;
14         next = _next;
15     }
16 }Edge[10005];
17  
18 int k,now[233],n,m,Count,head[10005];
19 int ans[1005],tot;
20 bool vis[1005];
21  
22 void dfs(int x){
23     vis[x]=1;
24     ans[x]++;
25     for(int i=head[x];i;i=Edge[i].next){
26         if(!vis[Edge[i].v]) dfs(Edge[i].v);
27     }
28 }
29  
30 int main(){
31     scanf("%d%d%d",&k,&n,&m);
32     up(1,k,i) scanf("%d",&now[i]);
33     up(1,m,i) {
34         int x,y;
35         scanf("%d%d",&x,&y);
36         Edge[Count]=node(x,y,head[x]);
37         head[x] = Count++;
38     }
39     up(1,k,i){
40         mem(vis,0);
41         dfs(now[i]);
42     }
43     up(1,n,i){
44         if(ans[i]==k) tot++;
45     }
46     printf("%d\n",tot);
47     return 0;
48 }

 

BZOJ 1648 Cow Picnic 奶牛野餐

标签:for   set   struct   include   printf   oid   void   zoj   nod   

原文地址:http://www.cnblogs.com/OIerLYF/p/7496036.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!