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

            USACO Section 2.3 Controlling Companies

            Controlling Companies

            Some companies are partial owners of other companies because they have acquired part of their total shares of stock. For example, Ford owns 12% of Mazda. It is said that a company A controls company B if at least one of the following conditions is satisfied:

            • Company A = Company B
            • Company A owns more than 50% of Company B
            • Company A controls K (K >= 1) companies denoted C1, ..., CK with each company Ci owning xi% of company B and x1 + .... + xK > 50%.

            Given a list of triples (i,j,p) which denote company i owning p% of company j, calculate all the pairs (h,s) in which company h controls company s. There are at most 100 companies.

            Write a program to read the list of triples (i,j,p) where i, j and p are positive integers all in the range (1..100) and find all the pairs (h,s) so that company h controls company s.

            PROGRAM NAME: concom

            INPUT FORMAT

            Line 1: n, the number of input triples to follow
            Line 2..n+1: Three integers per line as a triple (i,j,p) described above.

            SAMPLE INPUT (file concom.in)

            3
            1 2 80
            2 3 80
            3 1 20
            

            OUTPUT FORMAT

            List 0 or more companies that control other companies. Each line contains two integers that denote that the company whose number is the first integer controls the company whose number is the second integer. Order the lines in ascending order of the first integer (and ascending order of the second integer to break ties). Do not print that a company controls itself.

            SAMPLE OUTPUT (file concom.out)

            1 2
            1 3
            2 3
            Analysis
            This problem is a graph travelling problem. The DFS is needed. Here I provide the official analysis.

            The method used here to solve the problem is as follows. We keep track of which companies control which other companies, and every time we hear that so and so owns this much percent of so and so, we update our information.
            The array "owns" keeps track of how much of company j is owned by company i, whether directly or via controlled companies. The array "controls" keeps track of which companies are controlled by which other companies.

            code

            /*
            ID:braytay1
            PROG:concom
            LANG:C++
            */

            #include 
            <iostream>
            #include 
            <fstream>
            #include 
            <string>
            using namespace std;
            ofstream fout(
            "concom.out");
            ifstream fin(
            "concom.in");
            int stock[101][101],cx[101],n;
            bool con[101][101],vis[101];

            void DFS(int com){
                
            if (vis[com]) return;
                vis[com]
            =true;
                
            for (int i=1;i<=100;i++){
                    cx[i]
            +=stock[com][i];
                    
            if (cx[i]>50&&i!=com){            
                        DFS(i);
                    }

                }

            }

            int main(){
                fin
            >>n;
                memset(stock,
            0,sizeof(stock));
                
            for (int k=1;k<=n;k++){
                    
            int i,j,p;
                    fin
            >>i>>j>>p;
                    stock[i][j]
            =p;
                }

                
            for (int i=1;i<=100;i++) stock[i][i]=100;
                memset(cx,
            0,sizeof(cx));
                memset(vis,
            false,sizeof(vis));
                memset(con,
            false,sizeof(con));
                
            for(int i=1;i<=100;i++){
                    DFS(i);
                    
            for(int j=1;j<=100;j++){
                        
            if (cx[j]>50) con[i][j]=true;
                    }

                    memset(cx,
            0,sizeof(cx));
                    memset(vis,
            false,sizeof(vis));
                }

                
            for(int i=1;i<=100;i++){
                    
            for(int j=1;j<=100;j++){
                        
            if (con[i][j]&&i!=j) fout<<i<<" "<<j<<endl;
                    }

                }

                
            return 0;
            }

            posted on 2008-08-12 17:16 幻浪天空領(lǐng)主 閱讀(460) 評論(0)  編輯 收藏 引用 所屬分類: USACO

            <2025年8月>
            272829303112
            3456789
            10111213141516
            17181920212223
            24252627282930
            31123456

            導(dǎo)航

            統(tǒng)計(jì)

            常用鏈接

            留言簿(1)

            隨筆檔案(2)

            文章分類(23)

            文章檔案(22)

            搜索

            最新評論

            閱讀排行榜

            評論排行榜

            久久影视综合亚洲| 久久久久国产一区二区| 国产免费久久精品99re丫y| 99久久精品免费看国产一区二区三区 | 久久精品成人免费国产片小草| 久久91亚洲人成电影网站| 久久有码中文字幕| 伊人久久精品无码av一区| 93精91精品国产综合久久香蕉| 日韩AV无码久久一区二区| 日韩久久久久中文字幕人妻| 久久精品国产精品国产精品污 | 一本久久a久久精品亚洲| 久久99热国产这有精品| 久久伊人精品一区二区三区| 久久久91精品国产一区二区三区| 97精品伊人久久久大香线蕉| 91精品观看91久久久久久| 人人妻久久人人澡人人爽人人精品| 国产日产久久高清欧美一区| 亚洲AV日韩精品久久久久久久| 亚洲精品无码专区久久久| 91久久成人免费| 久久久国产精品网站| 久久久久久久久无码精品亚洲日韩 | 久久精品成人欧美大片| 国产精品久久永久免费| 久久亚洲高清观看| 久久青青草原亚洲av无码app| 久久中文字幕无码专区| 精品久久久久久久中文字幕| 久久亚洲中文字幕精品一区| 女人香蕉久久**毛片精品| 国产精品久久久久jk制服| 免费观看成人久久网免费观看| 色狠狠久久AV五月综合| 国产色综合久久无码有码| 国产毛片欧美毛片久久久| 中文字幕无码精品亚洲资源网久久| 国产免费久久精品99re丫y| 久久人人爽人人爽人人片AV麻烦|