• <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

            搜索

            積分與排名

            最新隨筆

            最新評論

            閱讀排行榜

            思思久久好好热精品国产| 国产成人精品白浆久久69| 欧美亚洲日本久久精品| 国产69精品久久久久APP下载| 久久久久久无码Av成人影院 | 中文精品99久久国产| 日本欧美久久久久免费播放网| 狠狠色综合久久久久尤物| 久久亚洲AV成人无码| 久久国产精品一区| 精品久久久久久中文字幕人妻最新| 日产久久强奸免费的看| 久久精品国产秦先生| 久久午夜伦鲁片免费无码| 亚洲精品美女久久久久99小说| 久久亚洲国产精品一区二区| 久久这里只有精品18| 久久91精品国产91久| 免费一级欧美大片久久网| 99久久99久久精品国产片果冻| 久久99精品国产麻豆宅宅| 三级韩国一区久久二区综合| 中文字幕亚洲综合久久| 久久国产精品久久| 99久久精品费精品国产一区二区| 狠狠色婷婷久久一区二区| 中文字幕亚洲综合久久菠萝蜜| 婷婷久久综合| 久久大香萑太香蕉av| 国产精品久久久久蜜芽| 久久人妻无码中文字幕| 久久久久久久久66精品片| 亚洲精品第一综合99久久| 久久精品国产亚洲AV蜜臀色欲| 思思久久99热只有频精品66| 成人综合久久精品色婷婷| 久久无码中文字幕东京热| 无码AV中文字幕久久专区| 性做久久久久久久| 久久久久四虎国产精品| 久久成人永久免费播放|