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过程中的两种常见问 ...
最新文章
- Matlab中寻找二值图像最大联通域的算法
- guava中的Joiner
- pass information between XXX.Aspx and XXX.Aspx.cs
- [蓝桥杯2016初赛]方格填数
- 我的Linux系统开始学习的过程
- 关于ElementUI中MessageBox弹框的取消键盘触发事件(enter,esc)关闭弹窗(执行事件)的解决方法
- loadrunner:关联操作
- 初识循环神经网络(RNN)
- sympy模块解指数方程
- JZOJ 4.2 C组 打鼹鼠
- C# 格式化json移除空值,参数按照第一个字符的键值 ASCII 码递增排序(SM2签名)
- 利用Clover、QTTabBar,像浏览器一样使用你的资源管理器,效率办公必备!
- 用Python玩转数据(一)
- python 微信图文消息接口_用Python实现微信公众号API素材库图文消息抓取
- 用计算机打爸爸妈妈,看图写话打电脑
- NRF52832-QFAA、NRF52840-QIAA性能区别-蓝牙智能手环穿戴
- 面向对象进阶 三大特性
- Excel如何统计大于某值小于某值的数量
- Es6常见面试题必看!
- Thinkphp5关联模型的定义与使用
热门文章
- 工程勘察设计管理条例释义电子书_全国有多少注册勘察设计工程师?官方数据告诉你...
- laravel框架中文手册_laravel请求参数校验方法
- c语言算法竞赛入门经典百度云,《算法竞赛入门经典》CH-2(C语言)
- 抓取百度页面html,百度会抓取页面代码中的注释内容吗
- php批量修改标题,帝国CMS批量修改信息标题的方法
- python输出不重复的单词_python-如何在文本文件中创建所有单词的列表,但字母重复的单词除外...
- python代码用c语言封装_使用C语言扩展Python程序的简单入门指引
- Java中如何执行source命令,在Java中运行UNIX Source命令
- 一、Go语言环境搭建
- 三十五、深入Python的引用计数