博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
zoj 3204 Connect them
阅读量:5869 次
发布时间:2019-06-19

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

最小生成树,我用的是并查集+贪心的写法。

 

#include
#include
#include
#include
using namespace std;const int maxn = 111;int c[maxn][maxn];int father[maxn];int flag[maxn];struct abc{ int fei, a, b;}dt[maxn*maxn];struct ans{ int aa, bb;}anss[maxn*maxn];bool cmp(const abc&a, const abc&b){ if (a.fei == b.fei&&a.a == b.a) return a.b < b.b; if (a.fei == b.fei) return a.a < b.a; return a.fei < b.fei;}bool cmp2(const ans&a, const ans&b){ if (a.aa == b.aa) return a.bb < b.bb; return a.aa < b.aa;}int find(int x){ if (x != father[x]) father[x] = find(father[x]); return father[x];}int main(){ int sb; scanf("%d", &sb); while (sb--) { int n, i, j; scanf("%d", &n); memset(c, 0, sizeof(c)); memset(father, 0, sizeof(father)); memset(flag, 0, sizeof(flag)); int q = 0; for (i = 0; i <= 100; i++) father[i] = i; for (i = 1; i <= n; i++) for (j = 1; j <= n; j++) scanf("%d", &c[i][j]); for (i = 1; i <= n; i++) { for (j = i + 1; j <= n; j++) { if (c[i][j] != 0) { dt[q].a = i; dt[q].b = j; dt[q].fei = c[i][j]; q++; } } } sort(dt, dt + q, cmp); int qq = 0; for (i = 0; i < q; i++) { int x = find(dt[i].a); int y = find(dt[i].b); if (x != y) { father[x] = y; anss[qq].aa = dt[i].a; anss[qq].bb = dt[i].b; qq++; } } for (i = 1; i <= n; i++){
int u = find(i);flag[u]++;} int dd = 0; for (i = 1; i <= n; i++){
if (flag[i] > 0 && flag[i] == n){dd = 1;break;}} if (dd==1) { sort(anss, anss + qq, cmp2); for (i = 0; i < qq; i++) { if (i < qq-1)printf("%d %d ", anss[i].aa, anss[i].bb); else printf("%d %d\n", anss[i].aa, anss[i].bb); } } else if (dd == 0) printf("-1\n"); } return 0;}

 

转载于:https://www.cnblogs.com/zufezzt/p/4449440.html

你可能感兴趣的文章
[AX]AX2012 Number sequence framework :(一)概览与原理浅析
查看>>
小程序单图上传到服务器
查看>>
iOS开发 - OC - 实现本地数据存储的几种方式一
查看>>
查看tomcat,jdk的操作位数
查看>>
C语言中的指针
查看>>
c51较c比较,单片机最小系统
查看>>
模式化窗口问题![window.dialogArguments]
查看>>
数据结构 - 二叉树(重构 + 遍历)
查看>>
四则运算程序
查看>>
手机端页面自适应解决方案
查看>>
15. 3Sum C++
查看>>
软件工程学概述(一)
查看>>
linux fdisk
查看>>
异或运算符使指定为翻转
查看>>
Eclipse Maven 构建(转)
查看>>
常用正则表达式积累
查看>>
关于微信公众号开发的一些坑
查看>>
ubuntu 16.04 的IP地址变更
查看>>
【网络流】【1010】【棋盘加数】
查看>>
PHP学习笔记(一)数组
查看>>