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

            搜索

            積分與排名

            最新隨筆

            最新評論

            閱讀排行榜

            久久免费99精品国产自在现线| 亚洲va久久久噜噜噜久久| 四虎国产精品免费久久5151| 国产精品亚洲综合专区片高清久久久| 狠狠色综合网站久久久久久久| 亚洲欧美日韩精品久久亚洲区 | 亚洲国产精品无码久久久不卡| 久久丫精品国产亚洲av| 国内精品久久久久久久coent| 伊人久久大香线蕉av不变影院| 99久久99久久精品国产片果冻| 日本五月天婷久久网站| 欧美亚洲另类久久综合| 人妻精品久久久久中文字幕69 | 久久人人爽人人人人片av| 99久久精品毛片免费播放| 久久天天婷婷五月俺也去| 18岁日韩内射颜射午夜久久成人| 亚洲国产精品成人久久| 一本大道久久香蕉成人网| 狠狠久久综合伊人不卡| 精品久久久久久久| 性色欲网站人妻丰满中文久久不卡| 久久99精品免费一区二区| 久久r热这里有精品视频| 99久久人妻无码精品系列| 浪潮AV色综合久久天堂| 亚洲AV无一区二区三区久久| 亚洲欧美日韩久久精品| 午夜精品久久久内射近拍高清 | 久久久久高潮毛片免费全部播放| 久久乐国产精品亚洲综合| 国产一区二区精品久久凹凸| 久久夜色精品国产亚洲| 久久99精品久久久久久久久久| 久久久久亚洲av无码专区喷水| 伊人久久综合无码成人网| 久久精品卫校国产小美女| 狠狠色丁香婷婷久久综合| 超级97碰碰碰碰久久久久最新| 2021最新久久久视精品爱|