zoukankan      html  css  js  c++  java
  • POJ 3256 Cow Picnic

    题目链接:http://poj.org/problem?id=3256

    /*
    对每个有牛的草地,都进行dfs,沿着所有的有向边,标记所有经过的草地,经过草地时,草地i的属性visited[i]++,
    若存在草地的visited[i]==K,则说明所有的K只牛都能到达此地
    
    cow[i]指的是第i只牛所在的草地
    
    存储路径可以使用邻接表
    
    */
    #include<iostream>
    #include<queue>
    using namespace std;
    
    
    int k,n,m;
    int head[1001];
    int x,y;
    int cow[101];
    int result;
    int visit[1001];
    int mark[1001];
    
    //邻接表
    struct node{
        int u,v;
        int next;
    }edge[10001];
    
    void dfs(int x){       //对第i个草地进行dfs
    
        visit[x]++;
        mark[x]=1;
        int cur=head[x];
        while(cur!=-1)
        {
            if(mark[edge[cur].v]==0)
                dfs(edge[cur].v);
            cur=edge[cur].next;
        }
    }
    
    int main (){
    
        while(cin>>k>>n>>m){
    
            memset(visit,0,sizeof(visit));
            for(int i=0;i<k;i++)
                cin>>cow[i];
    
            memset(head,-1,sizeof(head));
            for(int i=0;i<m;i++)
            {
                cin>>x>>y;
                edge[i].u=x;
                edge[i].v=y;
                edge[i].next=head[x];
                head[x]=i;
            }
    
            for(int i=0;i<k;i++)
            {
                memset(mark,0,sizeof(mark));
                dfs(cow[i]);
            }
    
            result=0;
    
            for(int i=1;i<=n;i++)
            {
                if(visit[i]==k)
                    result++;
                //cout<<visit[i];
            }
            cout<<result<<endl;
        }
        return 0;
    }
  • 相关阅读:
    快速排序
    Web总结
    浏览器兼容性问题汇总
    AngularJS理论基础
    预处器的对比——Sass、LESS.
    js事件知识整理
    Java script基础
    重拾nodeJs
    全国城市三级联动
    js 获取地址栏参数
  • 原文地址:https://www.cnblogs.com/neverchanje/p/3536990.html
Copyright © 2011-2022 走看看