P2853 [USACO06DEC]牛的野餐Cow Picnic
Posted for-miku
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了P2853 [USACO06DEC]牛的野餐Cow Picnic相关的知识,希望对你有一定的参考价值。
-------------------------
长时间不写代码了,从学校中抽身出来真的不容易啊
------------------------
链接:Miku
-----------------------
这道题的思路就在于建反图,如果每一头牛都能到达的话,那么在反图上,这个点也一定能到达每一头牛。
那么我们的目的就明确了,找到所有能在反图上找到每一头牛的点。
-----------------------
#include<iostream> #include<cstdio> #include<cstring> using namespace std; int p; int head[1001]; int f; struct b{ int ne; int to; } e[10005]; int k,n,m; int con; int cow[1001]; int x,y; int ans; int sum; int vis[1001]; void add(int f,int t){ p++; e[p].ne=head[f]; e[p].to=t; head[f]=p; } void dfs( int now){ if(vis[now]||f) return ; vis[now]=1; sum+=cow[now]; if(sum==k){ f=1; return ; } for(int i=head[now];i;i=e[i].ne){ int v=e[i].to; dfs(v); } return ; } int main(){ cin>>k>>n>>m; for(int i=1;i<=k;++i){ cin>>x; cow[x]++; } for(int i=1;i<=m;++i){ cin>>y>>x; add(x,y); } for(int i=1;i<=n;++i){ f=0; sum=0; memset(vis,0,sizeof(vis)); dfs(i); if(f) ans++; } cout<<ans; return 0; }
以上是关于P2853 [USACO06DEC]牛的野餐Cow Picnic的主要内容,如果未能解决你的问题,请参考以下文章
bzoj1648 / P2853 [USACO06DEC]牛的野餐Cow Picnic
洛谷P2853 [USACO06DEC]牛的野餐Cow Picnic
P2853 [USACO06DEC]牛的野餐Cow Picnic
[USACO06DEC]牛的野餐Cow Picnic DFS