• <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 幻浪天空領主 閱讀(445) 評論(0)  編輯 收藏 引用 所屬分類: USACO

            <2025年6月>
            25262728293031
            1234567
            891011121314
            15161718192021
            22232425262728
            293012345

            導航

            統計

            常用鏈接

            留言簿(1)

            隨筆檔案(2)

            文章分類(23)

            文章檔案(22)

            搜索

            最新評論

            閱讀排行榜

            評論排行榜

            国内精品伊人久久久久妇| 久久久久亚洲av无码专区喷水| 国产精品久久一区二区三区| 亚洲狠狠综合久久| 亚洲成av人片不卡无码久久| 久久久无码一区二区三区| 国产99久久久国产精免费| 国产69精品久久久久久人妻精品| 99国产精品久久久久久久成人热| 久久久这里有精品中文字幕| 久久久久人妻精品一区| 久久国产视屏| 国产精品久久久久9999高清| 久久91精品国产91| 精品国产一区二区三区久久蜜臀| 一本色道久久综合狠狠躁 | 香蕉久久久久久狠狠色| 久久九九全国免费| 亚洲国产精品无码久久一区二区| 久久一区二区三区免费| 久久精品男人影院| 69国产成人综合久久精品| 漂亮人妻被中出中文字幕久久 | 热久久视久久精品18| 国产高潮国产高潮久久久91 | 伊人久久大香线蕉精品不卡| 丁香五月综合久久激情| AV无码久久久久不卡网站下载| 午夜精品久久久久久影视riav| 国产精品伊人久久伊人电影| 青青青国产精品国产精品久久久久| 精品久久久久久中文字幕人妻最新| 香蕉久久久久久狠狠色| 久久精品中文字幕一区 | 国产精品18久久久久久vr| 亚洲精品蜜桃久久久久久| 日韩精品久久无码人妻中文字幕| 精品久久亚洲中文无码| 久久久无码人妻精品无码| 国产麻豆精品久久一二三| 国产成人综合久久综合|