POJ 1789 -- Truck History(Prim)

Posted Amysear

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了POJ 1789 -- Truck History(Prim)相关的知识,希望对你有一定的参考价值。

 POJ 1789 -- Truck History

 Prim求分母的最小。即求最小生成树

 1 #include<iostream>
 2 #include<cstring>
 3 #include<algorithm>
 4 using namespace std;
 5 const int maxn = 2000 + 10;
 6 const int INF = 1000000;
 7 int n;//有几个卡车 
 8 char str[maxn][10];
 9 int d[maxn];//记录编号的数值
10 int Edge[maxn][maxn];
11 int dist[maxn];
12 void prim()
13 {
14     int sum=0;
15     //加入源点
16      dist[0] = -1;
17     for(int i=1;i<n;i++)
18     {
19         dist[i] = Edge[0][i];
20     }
21     
22     for(int i=1;i<n;i++)//依次加入n-1条边
23     {
24         int min = INF,pos;
25         for(int j=1;j<n;j++)//找出最小的一条 
26         {
27             if(min>dist[j] && dist[j]!=-1)
28             {
29                 min = dist[j];pos = j;
30             }
31         }
32         //将pos加入
33          dist[pos] = -1;sum+=min;
34          //进行路径的更新
35          for(int k=1;k<n;k++)
36          {
37              if(dist[k] > Edge[pos][k])
38                  dist[k]=Edge[pos][k];
39           } 
40      } 
41      cout<<"The highest possible quality is 1/"<<sum<<"."<<endl;
42 }
43 
44 int main()
45 {
46     while(cin>>n && n)
47     {
48         for(int i=0;i<n;i++)
49         {
50             cin>>str[i];
51          } 
52          for(int i=0;i<n;i++)
53          {
54              int num=0;
55              for(int k=0;k<7;k++)
56                  num += (int)(str[i][k] - \'a\');
57             d[i] = num; 
58          }
59          memset(Edge,0,sizeof(Edge));
60          for(int i=0;i<n;i++)
61          {
62              for(int j=i+1;j<n;j++)
63              {
64                      int temp = 0;
65                      for(int k=0;k<7;k++)
66                      {
67                          temp += str[i][k]!=str[j][k];
68                      }
69                      Edge[i][j] = Edge[j][i] = temp;
70              }
71          }
72          memset(dist,INF,sizeof(dist));
73          prim();
74          
75     }
76     
77      
78     return 0;
79 }

 

 

以上是关于POJ 1789 -- Truck History(Prim)的主要内容,如果未能解决你的问题,请参考以下文章

POJ 1789 Truck History

POJ——T1789 Truck History

POJ - 1789(Truck History)最小生成树

POJ 1789 -- Truck History(Prim)

POJ-1789-Truck History

POJ 1789-Truck History