博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
POJ 3723
阅读量:4636 次
发布时间:2019-06-09

本文共 1415 字,大约阅读时间需要 4 分钟。

最大生成树

#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;const int maxn = 50000 + 131;const int maxm = 10000 + 131;struct Edge { int u, v, cost; Edge(int u_, int v_, int c_): u(u_), v(v_), cost(c_) {} bool operator < (const Edge a) const { return cost > a.cost; }};vector
G;/// Uinon-Setint Pre[maxm * 2], Num[maxm * 2];void Init(int N) { for(int i = 0; i <= N; ++i) Pre[i] = i;}int Find(int x) { /*int r = x; while(r != Pre[r]) r = Pre[r]; return Pre[x] = r;*/ if(x == Pre[x]) return x; else return Pre[x] = Find(Pre[x]);}bool Union(int x, int y) { int ax = Find(x), ay = Find(y); if(ax == ay) return false; Pre[ax] = ay; return true;}/// MST;typedef long long LL;LL Sum = 0;LL Kusual(int N,int R){ Sum = 0; sort(G.begin(),G.end()); Init(N); for(int i = 0; i < G.size(); ++i) { int u = G[i].u, v = G[i].v; if(Union(u, v)) { Sum +=(LL) (G[i].cost); } } return Sum;}int main(){ int N, M, R; int x, y, d; int T; scanf("%d",&T); while(T--) { scanf("%d%d%d", &N, &M, &R); G.clear(); for(int i = 0; i < R; ++i) { scanf("%d%d%d", &x, &y, &d); G.push_back(Edge(x,y+N,d)); G.push_back(Edge(y+N,x,d)); } //cout << Sum << endl; //Sum = 0; printf("%lld\n",(LL)(10000 * (N+M)) - Kusual(N+M,R)); }}

 

转载于:https://www.cnblogs.com/aoxuets/p/4944748.html

你可能感兴趣的文章
Python logger模块
查看>>
jquery控制css的display(控制元素的显示与隐藏)
查看>>
关于python做人工智能的一个网页(很牛逼)
查看>>
判断控件的CGRect是否重合,获取控件的最大XY值
查看>>
POJ-1128 Frame Stacking
查看>>
异常体系
查看>>
String.format(转)
查看>>
解决 CS0006 未能找到元数据文件
查看>>
HDU 5131.Song Jiang's rank list (2014ACM/ICPC亚洲区广州站-重现赛)
查看>>
mysql搭建主从数据库
查看>>
新的一年,新的开始
查看>>
python模块struct
查看>>
图像的灰度级和动态范围(转)
查看>>
C# MODBUS协议 上位机(转)
查看>>
CSS box-shadow 属性
查看>>
vue:图片切换动态显示
查看>>
备忘录
查看>>
软件工程个人作业02
查看>>
pip install 问题
查看>>
vue-router导航守卫,限制页面访问权限
查看>>