Spanning Tree with Maximum Degree
https://codeforces.com/contest/1133/problem/F1
题解:贪心+并查集
首先统计每个节点的度的数量,按度的数量从大到小排序,然后并查集建树(类似于最小生成树)
C++版本一
/*
*@Author: STZG
*@Language: C++
*/
#include <bits/stdc++.h>
#include<iostream>
#include<algorithm>
#include<cstdlib>
#include<cstring>
#include<cstdio>
#include<string>
#include<vector>
#include<bitset>
#include<queue>
#include<deque>
#include<stack>
#include<cmath>
#include<list>
#include<map>
#include<set>
//#define DEBUG
#define RI register int
using namespace std;
typedef long long ll;
//typedef __int128 lll;
const int N=200000+10;
const int M=100000+10;
const int MOD=1e9+7;
const double PI = acos(-1.0);
const double EXP = 1E-8;
const int INF = 0x3f3f3f3f;
int t,n,m,k,q;
int ans,cnt,flag,temp,sum,u,v;
int a[N];
int pre[N];
char str;
vector<int>G[N];
struct node{int a,id;bool operator<(const node &S)const{if(a==S.a)return id<S.id;return a>S.a;}
}e[N];
int find(int x){return (pre[x]==x)?x:pre[x]=find(pre[x]);}
int main()
{
#ifdef DEBUGfreopen("input.in", "r", stdin);//freopen("output.out", "w", stdout);
#endif//ios::sync_with_stdio(false);//cin.tie(0);//cout.tie(0);//scanf("%d",&t);//while(t--){scanf("%d%d",&n,&m);for(int i=1;i<=n;i++){e[i].id=i;pre[i]=i;}for(int i=1;i<=m;i++){scanf("%d%d",&u,&v);e[u].a++;e[v].a++;G[u].push_back(v);G[v].push_back(u);}sort(e+1,e+n+1);for(int i=1;i<=n;i++){for(int j=0,k=G[e[i].id].size();j<k;j++){u=e[i].id;v=G[e[i].id][j];int tx=find(u);int ty=find(v);if(tx!=ty){pre[tx]=ty;cout<<u<<" "<<v<<endl;}}}//}#ifdef DEBUGprintf("Time cost : %lf s\n",(double)clock()/CLOCKS_PER_SEC);
#endif//cout << "Hello world!" << endl;return 0;
}
Spanning Tree with Maximum Degree相关推荐
- 【Codeforces Round #544 (Div. 3) F2. Spanning Tree with One Fixed Degree】DFS
F2. Spanning Tree with One Fixed Degree 题意 给你nnn个点mmm条边的无向联通图,找出一棵生成树,使111这个点的度=d=d=d. 1≤n,m≤1051 \l ...
- Directed Minimum Spanning Tree: Chu-Liu/Edmonds Algorithm
我们的现代数据库大作业要求实现一个图查询系统,包括基于属性的子图查询.可达性查询(可选).最短路径查询(可选).TopK最短路径查询(可选).图形化展示(可选)等功能.分成子图同构查询小组以及可达性及 ...
- 2021ICPC(澳门) - LCS Spanning Tree(广义后缀自动机)
题目链接:点击查看 题目大意:给出一个含有 nnn 个点的无向图,点权为一个字符串,每条边的边权为相邻两点的 LCSLCSLCS,本题的 LCSLCSLCS 定义为两个字符串的最长公共子串的长度 求出 ...
- 2019ICPC(上海) - Spanning Tree Removal(构造)
题目链接:点击查看 题目大意:给出一个 nnn 个点的无向完全图,每次操作可以删掉包含 nnn 个点的一棵生成树中的所有边,问最多可以删几次 题目分析:典中典之欧拉通路构造题,构造方式如下: 在选定某 ...
- Minimum spanning tree HDU - 6954
Minimum spanning tree HDU - 6954 题意: 给定n-1个点,编号从2到n,两点a和b之间的边权重为lcm(a,b).请找出它们形成的最小生成树. 2<=n<= ...
- Spanning Tree Protocol介绍
Spanning Tree Protocol(STP)主要是用在网桥上,用来避免网络回路,并制造冗余连接(也就是保证网络的可靠性). 这里只是一个大概的介绍,具体的还是要去看IEEE 的 802.1D ...
- 《Boost》Part1 Minimum Spanning Tree
<Boost>Part1 Minimum Spanning Tree 1.Boost中的最小生成树介绍 MST最小生成树,是图论中的基本算法,还有一种是最大生成树,此处暂不介绍. 最小生成 ...
- 数据结构与算法笔记:贪心策略之BSTBBST, Hashtable+Dictionary+Map, Priority Queue~Heap, Minium Spanning Tree
BST & BBST BST(Binary Search Tree) 二叉搜索树,也就是使用二叉树来做查找 BBST(Balanced Binary Search Tree) 平衡二叉搜索树 ...
- 计算机网络之STP(Spanning Tree Protocol)生成树协议详解及其实验配置
目录 1.STP概念 1.1 STP选举过程 1.1.1 根桥和根端口的选举 1.1.2 端口角色的选举 2.STP端口状态解释及转换 2.1 STP的五种端口状态 2.2 STP过程中的两种常见问 ...
最新文章
- mongoDB-3.x启用认证
- win8安装msi出现提示2503 2502的错误代码
- FFmpeg再学习 -- Windows下安装说明
- ASP.NET使用log4Net日志组件教程(按日期与按日志大小切割)
- .NET建议使用的大小写命名原则
- 关于IDEA WEB项目的创建与无法继承HttpServlet问题
- Linux内存管理:为什么 Linux 需要虚拟内存?为什么 Linux 默认页大小是 4KB?
- LabelImg安装教程(已亲测)
- python可爱的小猫动画_菜根谭小猫
- 软件测试周刊(第54期):管他乐观还是悲观,都滚蛋,干就完了。
- (原创)AD账户误删导致Exchange邮箱被删 莫苦恼
- Spring框架初学习
- 数字证书是什么,里面都包含那些内容
- 赚任务网APP下载站源码/任务网源码/积分墙/网络任务网站源码
- imx6ull:uboot的make xxx_defconfig 过程分析
- python3下载-QPython3下载
- vscode使用问题合集
- PS 合并RGB通道 编辑单通道
- Thinkjs——定时任务配置代码示例
- 阿里云CentOS7服务器安装图形界面及windows远程连接
热门文章
- python pytorch自定义_PyTorch使用自定义模块创建数据模型
- 扫描路径_SolidWorks沿路径扭转扫描的线缆实例
- cwntos新建目录挂载磁盘_centos6修改挂载磁盘目录的方法
- Java中main函数只能调用同类中的静态方法?
- HTML的<span>标签【杂记】
- 初学者python书籍推荐_2019年Python入门书籍推荐
- 期末考试前的预习,科目:化工设备与反应器(3)
- 八、Java中的i++和++i到底是什么?
- 计算机设计学校,计算机设计制作大赛
- 博后招募 | 清华大学电子系姚权铭教授招聘机器学习方向博士后