zoukankan      html  css  js  c++  java
  • BZOJ 1601: [Usaco2008 Oct]灌水( MST )

    MST , kruskal 直接跑 

    ----------------------------------------------------------------------

    #include<cstdio>
    #include<algorithm>
    #include<vector>
    #include<cstring>
    #include<iostream>
     
    #define rep( i , n ) for( int i = 0 ; i < n ; ++i ) 
    #define clr( x , c ) memset( x , c , sizeof( x ) )
    #define Rep( i , n ) for( int i = 1 ; i <= n ; ++i )
     
    using namespace std;
     
    const int maxn = 300 + 5;
     
    struct edge {
    int u , v , w;
    bool operator < ( const edge &e ) const {
    return w < e.w;
    }
    };
     
    vector< edge > E;
     
    int p[ maxn ];
     
    int find( int x ) {
    return x == p[ x ] ? x : p[ x ] = find( p[ x ] );
    }
     
    long long kruskal( int n ) {
    rep( i , n ) p[ i ] = i;
    sort( E.begin() , E.end() );
    long long ans = 0;
    rep( i , E.size() ) {
    edge* e = &E[ i ];
    int a = find( e -> u ) , b = find( e -> v );
    if( a != b ) 
       p[ a ] = b , ans += e -> w;
       
    }
    return ans;
    }
     
    int main() {
    // freopen( "test.in" , "r" , stdin );
    int n;
    cin >> n;
    Rep( i , n ) {
    int w;
    scanf( "%d" , &w );
    E.push_back( ( edge ) { 0 , i , w } );
    }
    Rep( i , n )
       Rep( j , n ) {
       
        int w;
       
        scanf( "%d" , &w );
       
        if( i != j ) E.push_back( ( edge ) { i , j , w } );
       
       }
    cout << kruskal( n + 1 ) << " ";
    return 0;
    }

    ---------------------------------------------------------------------- 

  • 相关阅读:
    SSDB安装配置记录
    Ubuntu上通过nginx部署Django笔记
    PyCharm创建virtualenv方法
    Python3--列表生成式
    K最近邻算法项目实战
    K最近邻算法
    人工智能之机器学习
    C#把汉字转换成16进制(HEX)并向串口发送数据
    Ubuntu-18.04.2系统 Nginx+uWSGI+Django 部署生产环境
    HTTP响应状态码说明
  • 原文地址:https://www.cnblogs.com/JSZX11556/p/4550315.html
Copyright © 2011-2022 走看看