bzoj 1648: [Usaco2006 Dec]Cow Picnic 奶牛野餐【dfs】

从每个奶牛所在草场dfs,把沿途dfs到的草场的con都+1,最后符合条件的草场就是con==k的,扫一遍统计一下即可

#include<iostream>
#include<cstdio>
using namespace std;
const int K=105,N=1005;
int k,n,m,p[K],h[N],cnt,c[N],v[N],ti,ans;
struct qwe
{
    int ne,to;
}e[N*10];
int read()
{
    int r=0,f=1;
    char p=getchar();
    while(p>‘9‘||p<‘0‘)
    {
        if(p==‘-‘)
            f=-1;
        p=getchar();
    }
    while(p>=‘0‘&&p<=‘9‘)
    {
        r=r*10+p-48;
        p=getchar();
    }
    return r*f;
}
void add(int u,int v)
{
    cnt++;
    e[cnt].ne=h[u];
    e[cnt].to=v;
    h[u]=cnt;
}
void dfs(int u)
{
    v[u]=ti,c[u]++;
    for(int i=h[u];i;i=e[i].ne)
        if(v[e[i].to]!=ti)
            dfs(e[i].to);
}
int main()
{
    k=read(),n=read(),m=read();
    for(int i=1;i<=k;i++)
        p[i]=read();
    for(int i=1;i<=m;i++)
    {
        int x=read(),y=read();
        add(x,y);
    }
    for(int i=1;i<=k;i++)
        ti++,dfs(p[i]);
    for(int i=1;i<=n;i++)
        if(c[i]==k)
            ans++;
    printf("%d\n",ans);
    return 0;
}

原文地址:https://www.cnblogs.com/lokiii/p/8989312.html

时间: 2024-10-13 09:42:30

bzoj 1648: [Usaco2006 Dec]Cow Picnic 奶牛野餐【dfs】的相关文章

BZOJ 1648: [Usaco2006 Dec]Cow Picnic 奶牛野餐( dfs )

直接从每个奶牛所在的farm dfs , 然后算一下.. ---------------------------------------------------------------------------------------- #include<cstdio> #include<algorithm> #include<cstring> #include<iostream> #include<vector> #define rep( i ,

BZOJ 1648: [Usaco2006 Dec]Cow Picnic 奶牛野餐

Description The cows are having a picnic! Each of Farmer John's K (1 <= K <= 100) cows is grazing in one of N (1 <= N <= 1,000) pastures, conveniently numbered 1...N. The pastures are connected by M (1 <= M <= 10,000) one-way paths (no p

1648: [Usaco2006 Dec]Cow Picnic 奶牛野餐

1648: [Usaco2006 Dec]Cow Picnic 奶牛野餐 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 432  Solved: 270[Submit][Status] Description The cows are having a picnic! Each of Farmer John's K (1 <= K <= 100) cows is grazing in one of N (1 <= N <= 1,000)

[BZOJ1648][Usaco2006 Dec]Cow Picnic 奶牛野餐

1648: [Usaco2006 Dec]Cow Picnic 奶牛野餐 Time Limit: 5 Sec  Memory Limit: 64 MB Submit: 781  Solved: 483 [Submit][Status][Discuss] Description The cows are having a picnic! Each of Farmer John's K (1 <= K <= 100) cows is grazing in one of N (1 <= N &

BZOJ 1649: [Usaco2006 Dec]Cow Roller Coaster( dp )

有点类似背包 , 就是那样子搞... ------------------------------------------------------------------------------------ #include<cstdio> #include<cstring> #include<algorithm> #include<iostream> #define rep( i , n ) for( int i = 0 ;  i < n ; ++i

BZOJ 1648 Cow Picnic 奶牛野餐

作为傻逼的我,一开始就想到了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;

bzoj1649[Usaco2006 Dec]Cow Roller Coaster*

bzoj1649[Usaco2006 Dec]Cow Roller Coaster 题意: n条钢轨,第i条起点pi,长度为wi,价钱ci,有趣度fi,要求从0修到l使得总价钱不超过b的前提下有趣度和最大.n≤10000,l≤1000,b≤1000. 题解: 首先把钢轨组织成链表.接着dp:f[i][j]表示修到第i处花钱j,则f[i][j]=f[i-wk][j-ck]+fk,k为终点为i的钢轨.边界则设为f[0][j]都为0,f[i][j]都为负无穷,以保证从0开始修. 代码: 1 #incl

BZOJ 1668: [Usaco2006 Oct]Cow Pie Treasures 馅饼里的财富( dp )

dp , dp[ i ][ j ] = max( dp[ k ][ j - 1 ] ) ( i - 1 <= k <= i + 1 , dp[ k ][ j - 1 ] > 0 ) 一开始没注意到要 dp[ k ][ j - 1 ] > 0 才能取 , 然后就WA 了2次... -------------------------------------------------------------------------- #include<cstdio> #incl

BZOJ 1717: [Usaco2006 Dec]Milk Patterns 产奶的模式 [后缀数组]

1717: [Usaco2006 Dec]Milk Patterns 产奶的模式 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 1017  Solved: 561[Submit][Status][Discuss] Description 农夫John发现他的奶牛产奶的质量一直在变动.经过细致的调查,他发现:虽然他不能预见明天产奶的质量,但连续的若干天的质量有很多重叠.我们称之为一个“模式”. John的牛奶按质量可以被赋予一个0到1000000之间的