zoukankan      html  css  js  c++  java
  • 牛是否可以都到达某点——pku3256 Cow Picnic

    开始用floyd可以,不过时间太慢了(N*N*N)
    后来枚举牛做DFS连通性检验,O(N*M)
    View Code
    #include<stdio.h>
    #include
    <string.h>
    int net[1009][1009];
    bool visit[1009];
    int cow[109];
    int c[1009];

    void dfs(int x)
    {
    c[x]
    ++;
    visit[x]
    =1;
    for(int i=1;i<=net[x][0];i++)
    {
    if(!visit[net[x][i]])
    dfs(net[x][i]);
    }
    }

    int main()
    {
    int k,n,m;
    while(scanf("%d%d%d",&k,&n,&m)!=EOF){
    int i,j;
    for(i=1;i<=k;i++){
    scanf(
    "%d",&cow[i]);
    }
    for(i=0;i<=n;i++){
    c[i]
    =0;
    for(j=0;j<=n;j++){
    net[i][j]
    =0;
    }
    }

    for(i=1;i<=m;i++){
    int x,y;
    scanf(
    "%d%d",&x,&y);
    net[x][
    ++net[x][0]]=y;
    }

    for(i=1;i<=k;i++){
    memset(visit,
    0,sizeof(visit));
    dfs(cow[i]);
    }

    int all=0;
    for(i=1;i<=n;i++){
    if(c[i]==k)
    all
    ++;
    }

    printf(
    "%d\n",all);
    }
    }

      

  • 相关阅读:
    5.9上午
    5.4下午
    5.4上午
    5.2上午
    4.19下午
    4.18上午
    4.17下午
    4.17上午
    4.12下午
    4.13下午
  • 原文地址:https://www.cnblogs.com/huhuuu/p/2120647.html
Copyright © 2011-2022 走看看