uva 4138【最小產生樹prime演算法】

來源:互聯網
上載者:User

注意n個點有n-1條邊就ok


#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int n;char a[502][10];int b[502][5] = {0};int map[502][502];int dis[502];bool flag[502];int result;int mi(int i, int j){  int sum = 0;  int temp;  for(int k = 1; k <= 4; k++){    temp = abs( b[i][k] - b[j][k]);    if(temp > 5)      temp = 10 - temp;    sum += temp;  }  return sum;}void prim (){    int i,j;    int mark;    result=0;    memset(flag,false,sizeof(flag));    flag[1]=true;    for(i=1;i<=n;i++)    {        dis[i]=map[1][i];    }    for(i=1;i<n;i++)//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!    {        int min=999999999;        for(j=2;j<=n;j++)        {            if(!flag[j]&&dis[j]<=min)            {                min=dis[j];               mark=j;            }        }        flag[mark]=true;result+=dis[mark];        for(j=2;j<=n;j++)        {            if(!flag[j]&&map[mark][j]<dis[j])                dis[j]=map[mark][j];        }    }}int main(){  int t;  scanf("%d",&t);  while(t--){    memset(map ,0, sizeof(map));    scanf("%d",&n);    for(int i = 1;i <= n;i++){      scanf("%s",a[i]);      for(int j = 0;j < 4;j++){b[i][j+1] = a[i][j] -'0';      }    }    for(int i = 0;i < n;i++){      for(int j = i + 1;j <= n;j++){map[j][i] = map[i][j] = mi(i ,j);      }      }    prim();    int min1 =9999999;    for(int i = 1;i <= n;i++)if(map[0][i] < min1)min1 = map[0][i];    result += min1;    printf("%d\n",result);  }}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.