<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12
      書(shū)山有徑勤為路>>>>>>>>

      <<<<<<<<學(xué)海無(wú)涯苦作舟!

      Kruskal算法解決POJ 1251

       

      Description


      The Head Elder of the tropical island of Lagrishan has a problem. A burst of foreign aid money was spent on extra roads between villages some years ago. But the jungle overtakes roads relentlessly, so the large road network is too expensive to maintain. The Council of Elders must choose to stop maintaining some roads. The map above on the left shows all the roads in use now and the cost in aacms per month to maintain them. Of course there needs to be some way to get between all the villages on maintained roads, even if the route is not as short as before. The Chief Elder would like to tell the Council of Elders what would be the smallest amount they could spend in aacms per month to maintain roads that would connect all the villages. The villages are labeled A through I in the maps above. The map on the right shows the roads that could be maintained most cheaply, for 216 aacms per month. Your task is to write a program that will solve such problems. 

      Input

      The input consists of one to 100 data sets, followed by a final line containing only 0. Each data set starts with a line containing only a number n, which is the number of villages, 1 < n < 27, and the villages are labeled with the first n letters of the alphabet, capitalized. Each data set is completed with n-1 lines that start with village labels in alphabetical order. There is no line for the last village. Each line for a village starts with the village label followed by a number, k, of roads from this village to villages with labels later in the alphabet. If k is greater than 0, the line continues with data for each of the k roads. The data for each road is the village label for the other end of the road followed by the monthly maintenance cost in aacms for the road. Maintenance costs will be positive integers less than 100. All data fields in the row are separated by single blanks. The road network will always allow travel between all the villages. The network will never have more than 75 roads. No village will have more than 15 roads going to other villages (before or after in the alphabet). In the sample input below, the first data set goes with the map above. 

      Output

      The output is one integer per line for each data set: the minimum cost in aacms per month to maintain a road system that connect all the villages. Caution: A brute force solution that examines every possible set of roads will not finish within the one minute time limit. 

      Sample Input

      9
      A 2 B 12 I 25
      B 3 C 10 H 40 I 8
      C 2 D 18 G 55
      D 1 E 44
      E 2 F 60 G 38
      F 0
      G 1 H 35
      H 1 I 35
      3
      A 2 B 10 C 40
      B 1 C 20
      0

      Sample Output

      216
      30

      View Code
      #include "iostream"
      #include "algorithm"
      using namespace std;
      struct line{
          int begin, end, len;
      };
      line num[100];
      int amount, sum_line;
      int i, j;
      int father[100];
      int minlen;
      int find(int k){
          return father[k]==k?k:father[k]=find(father[k]);
      }
      int cmp(line a, line b){
          return a.len<b.len;
      }
      int kruskal(){ 
          minlen = 0;
          int a, b;
          for(i=0; i<sum_line; i++){   //以邊為核心來(lái)遍歷,因?yàn)槊織l邊有兩個(gè)點(diǎn),起點(diǎn)和終點(diǎn)。這個(gè)正是Kruskal的特色
              a = find(num[i].begin);
              b = find(num[i].end);
              if(a!=b){
                  father[a] = b;  //更新父結(jié)點(diǎn)
                  minlen += num[i].len;
              }
          }
          return minlen;
      }
      void init()
      {
          sum_line = 0;
          char start, tmpend;
          int tmpline, tmplen;
          int a, b;
          for(i=0; i<amount; i++){
              father[i] = i;
          }
          for(i=0; i<amount-1; i++){
              cin>>start;
              cin>>tmpline;
              a = start-'A';
              for(j=0; j<tmpline; j++){
                  cin>>tmpend;
                  cin>>tmplen;
                  b = tmpend-'A';
                  num[sum_line].begin = a;
                  num[sum_line].end = b;
                  num[sum_line++].len = tmplen;
              }
          }
          sort(num, num+sum_line, cmp);
      }
      int main()
      {
          while(cin>>amount && amount)
          {
              init();
              cout<<kruskal()<<endl;
          }
          return 0;
      }
      
      

       

       

      posted on 2011-09-21 09:25  More study needed.  閱讀(316)  評(píng)論(0)    收藏  舉報(bào)

      導(dǎo)航

      書(shū)山有徑勤為路>>>>>>>>

      <<<<<<<<學(xué)海無(wú)涯苦作舟!

      主站蜘蛛池模板: 成人国产亚洲精品一区二区| 怀柔区| 国产精品一区二区不卡视频| 国产精品免费中文字幕| 国产精品美女一区二区三| 国产一区二区高清不卡| 亚洲色最新高清AV网站| 欧美人与动牲交a免费| 啦啦啦高清在线观看视频www| 一区二区三区四区黄色网| 露脸叫床粗话东北少妇| 在线成人| 五月综合网亚洲乱妇久久| 国产毛片精品av一区二区| 18禁在线一区二区三区| 日本一区不卡高清更新二区 | 亚洲国产另类久久久精品网站| 伊人激情av一区二区三区| 亚洲精品人成网线在播放VA| 亚洲精品入口一区二区乱| 99久久久无码国产精品免费| 久9re热视频这里只有精品免费| 日本免费视频| 九九热在线观看视频免费| 疯狂做受XXXX高潮国产| 亚洲国产一区二区三区亚瑟| 日本无人区一区二区三区| 大尺度国产一区二区视频| 国产成人女人在线观看| 镇坪县| 丰满无码人妻热妇无码区| 午夜免费无码福利视频麻豆| 亚洲综合久久精品哦夜夜嗨| 男女做aj视频免费的网站| 久久精品国产久精国产| 国产精品国产三级国产专| 99久久精品费精品国产一区二| 国产中文字幕日韩精品| 色九九视频| 欧美日韩综合网| 开心色怡人综合网站|