SDAU练习1001

题目编号:1001

题目大意:有N给村庄,利用二维数组给出相对村庄的距离的权值,求最小生成的最小权值。

解题思路:根据老师上课讲的kuskal模版很容易套用求解。kuskal算法是按边权值大小求最小生成树,比较简单。很固定的算法,创建结构体,然后比较函数来排序利用函数。首先初始化,创建数组来存储距离的权值,按照上课模版套用算法,然后输出结果即可。
解题感想:有了模板也不太好弄,,有参考成分

[html]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. #include<iostream>  
  2. #include<algorithm>  
  3. using namespace std;  
  4. struct node{  
  5.     int x,y,n;  
  6. }arr[10001];  
  7.   
  8. int brr[10001],crr[101][101];  
  9.  bool cmp(const node&a, const node&b)  
  10. {  
  11.     return (a.n<b.n);  
  12. }  
  13.   
  14. int YJY(int k)  
  15. {  
  16.     if (brr[k]==k)  
  17.      return k;  
  18.     else {  
  19.         int tmp=YJY(brr[k]);  
  20.         brr[k]=tmp;  
  21.         return tmp;  
  22.     }  
  23. }  
  24. int main(){  
  25.     int i,j,k,n,size,x,y,sum=0;  
  26.     cin>>n;  
  27.     for (i=0;i<n*n;i++)  
  28.        brr[i]=i;  
  29.   
  30.     for (i=1;i<=n;i++)  
  31.         for (j==1;j<=n;j++)  
  32.             cin>>crr[i][j];  
  33.     cin>>k;  
  34.     for (i=0;i<k;i++)  
  35.     {  
  36.         cin>>x>>y;  
  37.         crr[x][y]=0;  
  38.         crr[y][x]=0;  
  39.     }  
  40.   
  41.     for (i=1,k=0;i<n;i++)  
  42.         for (j=1;j<n;j++,k++)  
  43.         {  
  44.             arr[k].x=i;  
  45.             arr[k].y=j;  
  46.             arr[k].n=crr[i][j];  
  47.         }  
  48.     sort(arr,arr+n*n,cmp);  
  49.     for (k=0,i=0;k<n-1;i++)  
  50.     {  
  51.         x=YJY(arr[i].x);  
  52.         y=YJY(arr[i].y);  
  53.         if (x!=y)  
  54.         {  
  55.                  brr[x]=y;  
  56.                  sum+=arr[i].n;  
  57.                  k++;  
  58.                  }  
  59.     }  
  60.     cout<<sum<<endl;  
  61.     return 0;  
  62. }  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值