POJ2377Bad Cowtractors(最大生成树)

POJ2377Bad Cowtractors

题目大意:给一个带权无向图,求最大生成树。

解题思路:

因为最小生成树按照kruskal的贪心算法是可以证明正确的,那么反向我们取最大的权值的边,然后不断的加入形成的生成树就是最大生成树。

代码:

#include <cstdio>
#include <algorithm>

using namespace std;

const int maxn = 1005;
const int maxm = 20005;

int N, M;
int p[maxn];
struct edge {
    int u, v, cost;
}e[maxm];

void init () {
    for (int i = 1; i <= N; i++)
        p[i] = i;
}

int getParent (int x) {

    return x == p[x] ? x : p[x] = getParent(p[x]);
}

int cmp (const edge& a, const edge& b) {

    return a.cost > b.cost;
}

int main () {

    while (scanf ("%d%d", &N, &M) != EOF ){
        for (int i = 0; i < M; i++)
            scanf ("%d%d%d", &e[i].u, &e[i].v, &e[i].cost);

        sort(e, e + M, cmp);

        init();

        int count = 0;
        int ans = 0;
        for (int i = 0; i < M; i++) {
            int p1 = getParent (e[i].u);
            int p2 = getParent (e[i].v);
            if (p1 != p2) {
                ans += e[i].cost;
                p[p1] = p2;
                count++;
            }

            if (count == N - 1)
                break;
        }

        if (count == N - 1)
            printf ("%d\n", ans);
        else
            printf ("-1\n");
    }
    return 0;
}
时间: 2024-10-14 06:15:40

POJ2377Bad Cowtractors(最大生成树)的相关文章

Poj2377--Bad Cowtractors(最大生成树)

Bad Cowtractors Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 12058   Accepted: 5008 Description Bessie has been hired to build a cheap internet network among Farmer John's N (2 <= N <= 1,000) barns that are conveniently numbered 1..N

[POJ2377]Bad Cowtractors(最大生成树,Kruskal)

题目链接:http://poj.org/problem?id=2377 于是就找了一道最大生成树的AC了一下,注意不连通的情况啊,WA了一次. 1 /* 2 ━━━━━┒ギリギリ♂ eye! 3 ┓┏┓┏┓┃キリキリ♂ mind! 4 ┛┗┛┗┛┃\○/ 5 ┓┏┓┏┓┃ / 6 ┛┗┛┗┛┃ノ) 7 ┓┏┓┏┓┃ 8 ┛┗┛┗┛┃ 9 ┓┏┓┏┓┃ 10 ┛┗┛┗┛┃ 11 ┓┏┓┏┓┃ 12 ┛┗┛┗┛┃ 13 ┓┏┓┏┓┃ 14 ┃┃┃┃┃┃ 15 ┻┻┻┻┻┻ 16 */ 17 #inc

poj - 2377 Bad Cowtractors(最大生成树)

http://poj.org/problem?id=2377 bessie要为FJ的N个农场联网,给出M条联通的线路,每条线路需要花费C,因为意识到FJ不想付钱,所以bsssie想把工作做的很糟糕,她想要花费越多越好,并且任意两个农场都需要连通,并且不能存在环.后面两个条件保证最后的连通图是一棵树. 输出最小花费,如果没办法连通所有节点输出-1. 最大生成树问题,按边的权值从大道小排序即可,kruskal算法可以处理重边的情况,但是在处理的时候,不能仅仅因为两个节点在同一个连通子图就判断图不合法

杭电ACM分类

杭电ACM分类: 1001 整数求和 水题1002 C语言实验题——两个数比较 水题1003 1.2.3.4.5... 简单题1004 渊子赛马 排序+贪心的方法归并1005 Hero In Maze 广度搜索1006 Redraiment猜想 数论:容斥定理1007 童年生活二三事 递推题1008 University 简单hash1009 目标柏林 简单模拟题1010 Rails 模拟题(堆栈)1011 Box of Bricks 简单题1012 IMMEDIATE DECODABILITY

【转】对于杭电OJ题目的分类

[好像博客园不能直接转载,所以我复制过来了..] 1001 整数求和 水题1002 C语言实验题——两个数比较 水题1003 1.2.3.4.5... 简单题1004 渊子赛马 排序+贪心的方法归并1005 Hero In Maze 广度搜索1006 Redraiment猜想 数论:容斥定理1007 童年生活二三事 递推题1008 University 简单hash1009 目标柏林 简单模拟题1010 Rails 模拟题(堆栈)1011 Box of Bricks 简单题1012 IMMEDI

转载:hdu 题目分类 (侵删)

转载:from http://blog.csdn.net/qq_28236309/article/details/47818349 基础题:1000.1001.1004.1005.1008.1012.1013.1014.1017.1019.1021.1028.1029. 1032.1037.1040.1048.1056.1058.1061.1070.1076.1089.1090.1091.1092.1093. 1094.1095.1096.1097.1098.1106.1108.1157.116

poj图论解题报告索引

最短路径: poj1125 - Stockbroker Grapevine(多源最短路径,floyd) poj1502 - MPI Maelstrom(单源最短路径,dijkstra,bellman-ford,spfa) poj1511 - Invitation Cards(单源来回最短路径,spfa邻接表) poj1797 - Heavy Transportation(最大边,最短路变形,dijkstra,spfa,bellman-ford) poj2240 - Arbitrage(汇率问题,

POJ 2377 Bad Cowtractors【最大生成树,Prime算法】

Bad Cowtractors Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 13628   Accepted: 5632 Description Bessie has been hired to build a cheap internet network among Farmer John's N (2 <= N <= 1,000) barns that are conveniently numbered 1..N

POJ2377 Bad Cowtractors【Kruskal】【求最大生成树】

Bad Cowtractors Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 10933 Accepted: 4614 Description Bessie has been hired to build a cheap internet network among Farmer John's N (2 <= N <= 1,000) barns that are conveniently numbered 1..N. FJ