poj 2395 Out of Hay

简介: 点击打开链接poj 2395 思路:求解最小生成树的最大边 注意:由于这里的长度最大到10^9,所以INF不能为0xFFFFFFF应该为0x3F3F3F3F。

点击打开链接poj 2395


思路:求解最小生成树的最大边
注意:由于这里的长度最大到10^9,所以INF不能为0xFFFFFFF应该为0x3F3F3F3F。

代码:


#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
using namespace std;
#define MAXN 2010
#define INF 0x3F3F3F3F

int n , m;
int vis[MAXN];
int lowcost[MAXN];
int G[MAXN][MAXN];

void init(){
    for(int i = 1 ; i <= n ; i++){
       for(int j = 1 ; j <= n ; j++)
           G[i][j] = INF;
    }
}

void prime(){
     memset(vis , 0 , sizeof(vis));
     int pos , ans;
     ans = 0;
     vis[1] = 1;
     for(int i = 1 ; i <= n ; i++)
        lowcost[i] = G[1][i];
     for(int i = 1 ; i <= n ; i++){
        pos = -1;
        for(int j = 1 ; j <= n ; j++){
           if(!vis[j] && (pos == -1 || lowcost[j] < lowcost[pos]))
              pos = j;
        }
        if(pos == -1)
            break;
        vis[pos] = 1;
        if(ans < lowcost[pos])
          ans = lowcost[pos];
        for(int j = 1 ; j <= n ; j++){
           if(!vis[j] && lowcost[j] > G[j][pos])
             lowcost[j] = G[j][pos];
        }
     }
     printf("%d\n" , ans);
}

int main(){
    int a , b , v;
    scanf("%d%d" , &n , &m);
    init();
    for(int i = 0 ; i < m ; i++){
        scanf("%d%d%d" , &a , &b , &v);
        if(G[a][b] > v)
          G[a][b] = G[b][a] = v;
    }
    printf("%d\n" , INF);
    prime();
    return 0;
}



目录
相关文章
POJ 1936 All in All
POJ 1936 All in All
75 0
|
算法框架/工具
POJ 2262 Goldbach's Conjecture
POJ 2262 Goldbach's Conjecture
139 0
F-POJ-3414 Pots
POJ-3414 Time Limit:1000 ms Memory Limit:65536 K Description You are given two po...
1002 0
poj 2299 求逆序数
http://poj.org/problem?id=2299 #include using namespace std; int aa[500010],bb[500010]; long long s=0; void merge(int l,int m,int r) { ...
802 0
|
算法 计算机视觉
最小割-poj-2914
poj-2914-Minimum Cut Description Given an undirected graph, in which two vertices can be connected by multiple edges, what is the size of the minimum cut of the graph? i.e. how many edges must b
1561 0
|
SDN
poj 2886 Who Gets the Most Candies?
点击打开poj 2886 思路: 求因子数+单点更新 分析: 1 题目的意思是有n个人构成一个环,刚开始是第k个人先出来。每个人有一个名字和数值A,如果A为正数,那么下一个出去的人是他左边的第A个人,如果是负数那么出去的将是右边的第A个人 2 这么我们要注意一下,因为n个人是围城一圈,那么左边就是顺时针方向,右边就是逆时针方向 3 那么我们就可以来推没一次出去的人的在剩下中是第几个。
783 0
poj 2528 Mayor's posters
点击打开链接poj2528 思路:离散化+线段树成段更新 分析: 1 首先这一题的数据是错误的,这题的区间的最大值为10000000,如果我们按照正常的线段树的思路去做的话肯定是会超内存和超时的。
1103 0