• <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 田兵 閱讀(399) 評論(0)  編輯 收藏 引用 所屬分類: 圖論題

            <2010年8月>
            25262728293031
            1234567
            891011121314
            15161718192021
            22232425262728
            2930311234

            導航

            統計

            常用鏈接

            留言簿(2)

            隨筆分類(65)

            隨筆檔案(65)

            文章檔案(2)

            ACM

            搜索

            積分與排名

            最新隨筆

            最新評論

            閱讀排行榜

            色欲久久久天天天综合网| 久久影院综合精品| 久久WWW免费人成—看片| 久久一区二区三区99| 99久久精品免费看国产一区二区三区 | 精品乱码久久久久久夜夜嗨| 色偷偷91久久综合噜噜噜噜| 久久久久亚洲AV片无码下载蜜桃| 色综合久久精品中文字幕首页| 午夜视频久久久久一区| 狠狠久久亚洲欧美专区| 亚洲另类欧美综合久久图片区| 久久精品国产亚洲AV无码娇色| 无码精品久久一区二区三区 | 久久天天躁狠狠躁夜夜2020一| 国产精品久久精品| 欧美激情一区二区久久久| 99久久无色码中文字幕| 亚洲va久久久噜噜噜久久狠狠| 久久久久婷婷| 久久www免费人成看国产片| 国产精品久久久久久福利69堂| 中文字幕久久亚洲一区| 久久久久99精品成人片三人毛片| 国产精品久久久天天影视| 狠狠色噜噜色狠狠狠综合久久| 欧美久久一级内射wwwwww.| 色综合久久88色综合天天| 777米奇久久最新地址| 99999久久久久久亚洲| 精品久久久久久中文字幕人妻最新| 深夜久久AAAAA级毛片免费看| 久久se这里只有精品| 久久国产精品波多野结衣AV| 久久99国产精品二区不卡| 久久香蕉一级毛片| 久久精品成人免费网站| 久久久久久狠狠丁香| 99久久婷婷免费国产综合精品| 狠狠色丁香久久婷婷综| 国产69精品久久久久99|