男女搭配,干活不累

  题目大意:需要招募女兵和男兵,每一个人都的需要花费1W元的招募费用,但是如果有一些人之间有亲密的关系,那么就会减少一定的价钱,如果给出1~9999的人之间的亲密关系,现在要你求招募所有人的时候,最少的价格?

  看似这一题要用到二分图,其实根本用不上,我们仔细想一下我们如果把所有的男和女都看成人的话,那么其实我们就是要求这些关系的最大值的负值(也就是最小生成树)

  这样一看,这题其实很裸,要注意区分男和女就行(别搞错男女了,不然就RE了),男的点的位置就看成是女的总数+男的坐标就可以了额

  

 #include <iostream>
#include <functional>
#include <algorithm>
#define MAX 20005
#define MAX_E 50005 using namespace std;
typedef int Position;
typedef struct _edge
{
int cost;
int from;
Position to;
}Edge_Set;
int fcomp(const void *a, const void *b)
{
return (*(Edge_Set *)a).cost - (*(Edge_Set *)b).cost;
} static Edge_Set Edge[MAX_E];
Position V_Set[MAX]; void Kruskal(const int, const int);
Position Find(Position);
bool If_Same(Position, Position);
void Union(Position, Position); int main(void)
{
int test_case, men_sum, women_sum, R_sum, cost_tmp;
Position from, to;
scanf("%d", &test_case); while (test_case--)
{
//这一题不用二分图的方法,直接上MST
scanf("%d%d%d", &women_sum, &men_sum, &R_sum);
for (int i = ; i < R_sum; i++)
{
scanf("%d%d%d", &from, &to, &cost_tmp);//男生的坐标要加上女生总数
Edge[i].from = from; Edge[i].to = to + women_sum; Edge[i].cost = -cost_tmp;//存负的
}
Kruskal(men_sum + women_sum, R_sum);
}
return ;
} Position Find(Position x)
{
if (V_Set[x] < )
return x;
else return V_Set[x] = Find(V_Set[x]);
} bool If_Same(Position x, Position y)
{
Position px, py;
px = Find(x); py = Find(y);
return px == py;
} void Union(Position x, Position y)
{
Position px, py;
px = Find(x); py = Find(y); if (px != py)
{
if (V_Set[px] < V_Set[py])
{
V_Set[px] += V_Set[py];
V_Set[py] = px;
}
else
{
V_Set[py] += V_Set[px];
V_Set[px] = py;
}
}
} void Kruskal(const int n, const int edge_sum)
{
//初始化查并集
fill(V_Set, V_Set + n, -);
qsort(Edge, edge_sum, sizeof(Edge_Set), fcomp);//把边排个大小 Edge_Set e;
long long ans = ;
for (int i = ; i < edge_sum; i++)
{
e = Edge[i];
if (!If_Same(e.from, e.to))
{
Union(e.from, e.to);
ans += e.cost;
}
}
printf("%lld\n", (long long)n * + ans);
}

MST:Conscription(POJ 3723)的更多相关文章

  1. Conscription(POJ 3723)

    原题如下: Conscription Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 16584   Accepted: 57 ...

  2. Day5 - D - Conscription POJ - 3723

    Windy has a country, and he wants to build an army to protect his country. He has picked up N girls ...

  3. POJ 3723 Conscription MST

    http://poj.org/problem?id=3723 题目大意: 需要征募女兵N人,男兵M人,没征募一个人需要花费10000美元,但是如果已经征募的人中有一些关系亲密的人,那么可以少花一些钱, ...

  4. poj - 3723 Conscription(最大权森林)

    http://poj.org/problem?id=3723 windy需要挑选N各女孩,和M各男孩作为士兵,但是雇佣每个人都需要支付10000元的费用,如果男孩x和女孩y存在亲密度为d的关系,只要他 ...

  5. POJ 3723 Conscription(并查集建模)

    [题目链接] http://poj.org/problem?id=3723 [题目大意] 招募名单上有n个男生和m个女生,招募价格均为10000, 但是某些男女之间存在好感,则招募的时候, 可以降低与 ...

  6. POJ 3723 Conscription 最小生成树

    题目链接: 题目 Conscription Time Limit: 1000MS Memory Limit: 65536K 问题描述 Windy has a country, and he wants ...

  7. POJ 3723 Conscription

    Conscription Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 6325   Accepted: 2184 Desc ...

  8. POJ 3723 Conscription (Kruskal并查集求最小生成树)

    Conscription Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 14661   Accepted: 5102 Des ...

  9. 【POJ - 3723 】Conscription(最小生成树)

    Conscription Descriptions 需要征募女兵N人,男兵M人. 每招募一个人需要花费10000美元. 如果已经招募的人中有一些关系亲密的人,那么可以少花一些钱. 给出若干男女之前的1 ...

随机推荐

  1. 8.Android之日期DatePicker和时间TimeTicker控件学习

    手机设置时间日期很普遍,今天就梳理下. 首先在拖入一个按钮 ,日期和时间控件到工程里,如图: 代码如下: <?xml version="1.0" encoding=" ...

  2. rqnoj71 拔河比赛

    题目描述 superwyh的学校要举行拔河比赛,为了在赛前锻炼大家,老师决定把班里所有人分为两拨,进行拔河因为为锻炼所以为了避免其中一方的实力过强老师决定以体重来划分队伍,尽 量保持两个队伍的体重差最 ...

  3. Nginx 中 fastcgi_pass 监听端口 unix socket和tcp socket差

    Nginx 中 fastcgi_pass 监听端口 unix socket和tcp socket差别   Nginx连接fastcgi的方式有2种:unix domain socket和TCP,Uni ...

  4. 织梦DedeCMS删除所有栏目或文章后,新建ID不从1开始的解决方法

    这个修改方法很简单,从模板无忧那里找到的,只需要在后台系统-SQL命令行工具里面运行以下语句即可,不用采用笨方法重新安装织梦CMS了. 删除所有栏目,新建ID从1开始: ALTER TABLE `de ...

  5. swift项目中引入OC框架

  6. VMWare提供了三种工作模式上网

    VMWare提供了三种工作模式,它们是bridged(桥接模式).NAT(网络地址转换模式)和host-only(主机模式).要想在网络管理和维护中合理应用它们,你就应该先了解一下这三种工作模式. 1 ...

  7. go runtime scheduler

     http://www.slideshare.net/matthewrdale/demystifying-the-go-scheduler http://www.cs.columbia.edu/~a ...

  8. import numpy 和 from numpy import * 的区别

    对于 import xxx 使用函数的方法为 x'x'x.Afunc 而对于 from xxx import * 调用函数的方法为 Afunc

  9. Yii2 如何使用事件

    原文地址:http://www.fancyecommerce.com/2016/04/29/yii2-%E4%BD%BF%E7%94%A8event-1-%EF%BC%8C%E5%A6%82%E4%B ...

  10. Dynamic Virtual Channels

    refer http://blogs.msdn.com/b/rds/archive/2007/09/20/dynamic-virtual-channels.aspx An important goal ...