zoukankan      html  css  js  c++  java
  • HDU 1102 Constructing Roads

    提议很简单,就是N个村庄,每个村庄连起来需要一定的费用(以两个村庄的距离作为费用)。有M条路已经是相连的(不需要建路连接),问最少的费用,使它们都相连。

    最小生成树,prim解决,附上代码:

     1 #include<iostream>
     2 #include<cstring>
     3 #include<stdio.h>
     4 #define MAX 101
     5 #define MAXINT 1000001
     6 using namespace std;
     7 int map[MAX][MAX],dis[MAX],m,n,luxian;
     8 bool visit[MAX];
     9 void prim()
    10 {
    11     memset(visit,false,sizeof(visit));
    12     int i,j,MIN,k;luxian=0;
    13     for(i=1;i<=n;i++) dis[i]=map[1][i];
    14     visit[1]=true;
    15     for(i=1;i<n;i++){
    16         MIN=MAXINT;
    17         for(j=2;j<=n;j++)
    18             if(!visit[j] && dis[j]<MIN){
    19                 MIN=dis[j];
    20                 k=j;
    21             }
    22         visit[k]=true;
    23         luxian+=MIN;
    24         for(j=2;j<=n;j++)
    25             if(!visit[j] && map[k][j]<dis[j]){
    26                 dis[j]=map[k][j];
    27             }
    28     }
    29 }
    30 int main()
    31 {
    32     int i,j,x,y;
    33     while(scanf("%d",&n)!=EOF){
    34         for(i=1;i<=n;i++)
    35             for(j=1;j<=n;j++)
    36                 scanf("%d",&map[i][j]);
    37         scanf("%d",&m);
    38         for(i=1;i<=m;i++){
    39             scanf("%d%d",&x,&y);
    40             map[x][y]=map[y][x]=0;
    41         }
    42         prim();
    43         printf("%d
    ",luxian);
    44     }
    45 }
    View Code
  • 相关阅读:
    Win10 UWP程序内的文件格式
    第一章
    英语
    BOM
    html基础
    协程
    python
    列表 元组 range
    我的Python学习笔记(四):动态添加属性和方法
    我的Python学习笔记(三):私有变量
  • 原文地址:https://www.cnblogs.com/bokezhilu/p/3574286.html
Copyright © 2011-2022 走看看