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;
    }

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

  • 相关阅读:
    JPA的查询语言—使用构造器
    Servlet3.0使用注解定义Servlet
    jQuery操作<input type="radio">
    JPA的查询语言—使用原生SQL
    jQuery动态添加<input type="file">
    JPA的查询语言—JPQL的关联查询
    jQuery操作<select>
    Servlet3.0异步处理
    jQuery操作<input type="checkbox">
    mysql binlog二进制日志详解
  • 原文地址:https://www.cnblogs.com/JSZX11556/p/4550315.html
Copyright © 2011-2022 走看看