zoukankan      html  css  js  c++  java
  • poj 1287(prim)

    poj又很英勇的挂掉了,无奈。。再挂上几次我就转战zoj!

    今天刷了几道最小生成树, 都是用prim写的

    #include<cstdio>
    #include<cstring>
    #define amin(a,b) a<b?a:b
    #define MAX 99999999
    using namespace std ;
    int map[105][105] ;
    int i, j, k ;
    int prim(int n){
        int dis[105] ;
        int x = 1 ;
        int sum = 0 ;
        memset(dis, 127, sizeof(dis)) ;
        dis[1] = 0 ;
        for(i=2; i<=n; i++)
            if(map[x][i]!=0)
                dis[i] = map[x][i] ;
        for(i=2; i<=n; i++){
            int min = MAX ;
            for(j=1; j<=n; j++)
                if(dis[j]!=0&&min>dis[j]){
                    min = dis[j] ;
                    x = j ;
                }
            dis[x] = 0 ;
            sum += min ;
           //printf("  %d  ", sum) ;
            for(k=1; k<=n; k++){
                if(map[x][k]!=0&&(map[x][k]<dis[k])&&dis[k]!=0)
                    dis[k] = map[x][k] ;
            }
        }
        return sum ;
    }
    int main(){
        int n, m, value, a, b, sum ;
        while(true){
            memset(map, 0sizeof(map)) ;
            scanf("%d", &n) ;
            if(!n)   break ;
            scanf("%d", &m) ;
            while(m--){
                scanf("%d%d%d", &a, &b, &value) ;
                if(map[a][b]==0)
                    map[a][b] = map[b][a] = value ;
                else
                    map[a][b]=map[b][a]=amin(value, map[a][b]) ;
                //printf("%d  ", map[a][b]) ;
            }
            sum = prim(n) ;
            printf("%d\n", sum) ;
        }
        return 0 ;

    } 

  • 相关阅读:
    ubuntu安装QQ
    Ubuntu 14.04/14.10下安装VMware Workstation
    在Macbook上安装ubuntu
    MacBook Air密码忘了,苹果电脑密码忘了怎么办
    Win7下U盘安装Ubuntu14.04双系统
    linux紧急救援模式
    Standard Library Modules Using Notes
    【LeetCode】136 & 137 & 260
    Python获取脚本所在目录的正确方法【转】
    Autorun a python script after reboot using rc.local
  • 原文地址:https://www.cnblogs.com/xiaolongchase/p/2221348.html
Copyright © 2011-2022 走看看