還是暢通工程 hdu1233

來源:互聯網
上載者:User

http://acm.hdu.edu.cn/showproblem.php?pid=1233

// 最小產生樹的prim 演算法,一開始知道原理,但是就是不知怎麼把知道的轉換成電腦語言,鑒戒了別人的演算法後才可以寫出
#include<iostream>//2246861 2010-03-25 18:03:27 Accepted 1233 187MS 276K 971 B C++ 悔惜晟 
#include<cstdio>
using namespace std;
int const MAX = 10000000;

int link[101];//表示已連接點的位置
int visit[101];//表示一個點沒有串連過
int map[101][101];

int main()
{
 int n, i ,j, a, b, dis, sum;
 while(scanf("%d", &n) != EOF && n != 0)
 {
  for( i =1 ; i <= n ;i++)
  {
   //link[i] = 0;
   visit[i] = 1;//表示一個點沒有串連過
   for(j = 1; j<= n; j++)
    map[i][j] = MAX;
  }
  for(i = 1; i <= n*(n - 1)/2; i++)
  {
   scanf("%d%d%d", &a, &b, &dis);
   map[a][b] = dis;
   map[b][a] = dis;
  }
  //link[1] = 0;
  visit[1] = 0;
  link[0] = 1;
  int cnt =1;
  sum = 0;
  while(cnt < n)
  {
   int min = MAX;
      for(i = 0 ;i < cnt ;i++)
    for(j = 1; j<= n; j++)
     if(visit[j] && map[link[i]][j] < min)
      {
      min = map[link[i]][j];
      //a = j;
      link[cnt] = j;
     }
     
     //link[cnt] = a;
     visit[link[cnt]] = 0;
     sum += min;
     cnt++;
     
  }
  printf("%d/n",sum);
 }
}
   
  
  
  
  

 

#include<iostream>//2233542 2010-03-23 11:41:01 Accepted 1233 187MS 320K 789 B C++ 悔惜晟
#include<algorithm>// Kruskal 用於稀疏圖  效率不高,還是有改進
#include<cstdio>
using namespace std;
int tt[4950];//一開始這裡賦值100 越界

struct stu
{
 int a;
 int b;
 int s;
}df[4950];

int cmp(stu a, stu b)
{
 return a.s < b.s;
}

int find(int a)
{
 int r = a;
 while(r != tt[r])
  r = tt[r];
 return r;
}

void mergy(int a, int b)
{
 if(a > b) tt[b] = a;
 else    tt[a] = b;
}
int main()
{
 int i, n, a, b, sum;
 while(scanf("%d", &n) != EOF && n != 0)
 {
  n = n*(n-1)/2;
  for(i = 0; i < n; i++)
  {
   scanf("%d%d%d", &df[i].a, &df[i].b, &df[i].s);
   tt[i+1] = i+1;
  }
  sort(df, df+n, cmp);//先把這裡排序
  sum = 0;
  for(i = 0; i < n ; i++)
  {
   a = find(df[i].a);
   b = find(df[i].b);
   if(a != b)
   {
    mergy(a, b);
    sum +=df[i].s;
   }
  }
  
  printf("%d/n",sum);
 }
}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.