• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            AOJ 236 Cow Picnic , poj 3256

            Cow Picnic
            Time Limit: 2000 ms   Memory Limit: 64 MB
            Total Submission: 1   Accepted: 1
            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 path connects a pasture to itself).

            The cows want to gather in the same pasture for their picnic, but (because of the one-way paths) some cows may only be able to get to some pastures. Help the cows out by figuring out how many pastures are reachable by all cows, and hence are possible picnic locations.

            Input
            Line 1: Three space-separated integers, respectively: K, N, and M
            Lines 2..K+1: Line i+1 contains a single integer (1..N) which is the number of the pasture in which cow i is grazing.
            Lines K+2..M+K+1: Each line contains two space-separated integers, respectively A and B (both 1..N and A != B), representing a one-way path from pasture A to pasture B.

            Output
            Line 1: The single integer that is the number of pastures that are reachable by all cows via the one-way paths.

            Sample Input
            2 4 4
            2
            3
            1 2
            1 4
            2 3
            3 4
             

            Sample Output
            2[EOL][EOF]

            Hint
            The cows can meet in pastures 3 or 4.

            Source
            USACO 2006 December Silver 

            從每個牛開始求一次單源最短路徑,假設起點是X,如果從X能到i (di[i]!=INF) ,cnt[i]++,用來統計能到達 i 點的牛的數量。

            結果就是滿足cnt[i]==K的數量,即i點所有的牛都可以到達。

            用spfa求,spfa在這里不是求最段路徑,只要到了就行,不需要是最短的,因此會更快一點。
            #include<iostream>
            #include
            <time.h>
            #include
            <vector>
            #include
            <queue>
            using namespace std;
            const int MAX=1001,INF=0x0fffffff;
            vector
            <int> mp[MAX];
            int d[MAX], cnt[MAX];
            int K,N,M;
            int stay[101];
            void spfa(int x)
            {
                 
            for(int i=1; i<=N; i++)
                         d[i]
            =INF;
                 queue
            <int>q;
                 q.push(x);
                 d[x]
            =0;
                 
            while(q.size())
                 {  
                     
                      
            int u=q.front(); q.pop(); 
                      
            for(int i=0; i<mp[u].size(); i++)
                      {
                              
            if(d[mp[u][i]]==INF)
                              {
                                   d[mp[u][i]]
            =d[u]+1;
                                   q.push(mp[u][i]);
                              }
                      }
                                
                 }
            }

            int main()
            {
                cin
            >>K>>N>>M;
                
                
            for(int i=1; i<=K; i++)
                        cin
            >>stay[i];
                
                
            for(int i=1,s,t; i<=M; i++)
                        {
                                 cin
            >>s>>t;
                                 mp[s].push_back(t);
                        }
                
                
            for(int i=1; i<=K; i++)
                {
                   spfa(stay[i]);    
                   
            for(int i=1; i<=N; i++)
                           
            if(d[i]!=INF)cnt[i]++;   
                }
                
                
            int ans=0;
                
                
            for(int i=1; i<=N; i++)  
                        
            if(cnt[i]==K)ans++;
                
                cout
            <<ans<<endl;        
                system(
            "pause");
                
            return 0;
            }

            posted on 2010-08-30 15:49 田兵 閱讀(401) 評論(0)  編輯 收藏 引用 所屬分類: 圖論題

            <2010年7月>
            27282930123
            45678910
            11121314151617
            18192021222324
            25262728293031
            1234567

            導航

            統計

            常用鏈接

            留言簿(2)

            隨筆分類(65)

            隨筆檔案(65)

            文章檔案(2)

            ACM

            搜索

            積分與排名

            最新隨筆

            最新評論

            閱讀排行榜

            久久国产精品免费一区二区三区| 国产亚洲精久久久久久无码77777| 亚洲综合熟女久久久30p| 久久精品亚洲日本波多野结衣| 色欲av伊人久久大香线蕉影院| 久久66热人妻偷产精品9| 久久国产精品偷99| 午夜人妻久久久久久久久| 国产美女久久久| 国内精品久久国产| 久久99精品国产麻豆宅宅| 久久婷婷五月综合色奶水99啪| 久久精品99久久香蕉国产色戒 | 久久综合九色综合欧美狠狠| 久久er国产精品免费观看8| 久久久亚洲欧洲日产国码是AV| 精品久久777| 久久久精品人妻一区二区三区四| 99久久99久久精品国产片果冻| 亚洲国产精品无码久久久蜜芽 | 国内精品久久久久久久coent| 波多野结衣久久一区二区 | 久久er国产精品免费观看8| 久久精品国产亚洲AV无码娇色 | 久久精品无码av| 久久r热这里有精品视频| 久久亚洲精品成人无码网站| 久久人人超碰精品CAOPOREN| 久久国产精品久久久| 久久精品中文无码资源站| 无码人妻少妇久久中文字幕蜜桃| 午夜精品久久久久久影视777| 很黄很污的网站久久mimi色 | 亚洲国产一成久久精品国产成人综合 | 欧美久久久久久午夜精品| 国产成人综合久久久久久 | 人妻无码精品久久亚瑟影视 | 国产免费久久精品99re丫y| 久久无码人妻精品一区二区三区 | 国产成人精品久久一区二区三区av| 国产91久久精品一区二区|