Description

Input

Output

Data Constraint

Solution

  • 一开始还以为是 LCT 这样的高级数据结构,但是仔细算了算复杂度,发现直接做也可以过。

  • 按边权从小到大排一遍序,枚举最小边做一遍最小生成树即可。

  • 如果不放心可以加一些小优化(比如超过答案就可以直接退出了),就肯定能过去了。

  • 理论时间复杂度 O(T∗N∗M∗α(N))O(T*N*M*α(N)) ,实际跑得飞快。

Code

#include<cstdio>
#include<algorithm>
using namespace std;
const int N=1001;
struct data
{int x,y,z;
}a[N<<2];
int f[N],t[N];
inline int read()
{int X=0,w=1; char ch=0;while(ch<'0' || ch>'9') {if(ch=='-') w=-1;ch=getchar();}while(ch>='0' && ch<='9') X=(X<<3)+(X<<1)+ch-'0',ch=getchar();return X*w;
}
inline bool cmp(data x,data y)
{return x.z<y.z;
}
inline int get(int x)
{return f[x]==x?x:f[x]=get(f[x]);
}
int main()
{int T=read(),tot=0;while(T--){int n=read(),m=read(),k=1,mn=-1,mx;bool pd=true;for(int i=1;i<=n;i++) f[i]=i;for(int i=1;i<=m;i++) a[i].x=read(),a[i].y=read(),a[i].z=read();sort(a+1,a+1+m,cmp);for(int i=1;i<=m;i++){if(a[i].z!=a[1].z) pd=false;int f1=get(a[i].x),f2=get(a[i].y);if(f1!=f2){f[f1]=f2,k++;if(mn<0) mn=a[i].z;mx=a[i].z;}}if(k<n){printf("-1\n");continue;}if(pd){printf("0\n");continue;}int ans=mx-mn;for(int i=1;i<=m-n+2;i++){//for(int j=k=1;j<=n;j++) f[j]=j;k=1,tot++;for(int j=i;j<=m && a[j].z-a[i].z<ans;j++){if(t[a[j].x]<tot) t[a[j].x]=tot,f[a[j].x]=a[j].x;if(t[a[j].y]<tot) t[a[j].y]=tot,f[a[j].y]=a[j].y;int f1=get(a[j].x),f2=get(a[j].y);if(f1!=f2){f[f1]=f2;if(++k==n){ans=a[j].z-a[i].z;break;}}}}printf("%d\n",ans);}return 0;
}

JZOJ 5435. 【NOIP2017提高A组集训10.30】Graph相关推荐

  1. JZOJ 5436. 【NOIP2017提高A组集训10.30】Group

    Description Input Output Sample Input 10 113 28 3 39 90 46 14 55 35 48 47 Sample Output 62453 Data C ...

  2. JZOJ 5434. 【NOIP2017提高A组集训10.30】Matrix

    Description Input Output Sample Input 3 5 3 1 3 5 Sample Output 1 2 3 Data Constraint Solution 首先我们二 ...

  3. 【NOIP2017提高A组集训10.30】总结

    今天干了些什么: ①看到第一题,我蒙B了--感觉这题之前在哪里见过,记得好像是将图斜过来看还是怎样的.于是去看第二题. ②第二题一个很显然的做法,将边排序,然后暴力建MST.然而我将时间复杂度多算了一 ...

  4. JZOJ 5417. 【NOIP2017提高A组集训10.24】方阵

    Description 题目背景 热烈庆祝北京师范大学附属实验中学成立100周年! 问题描述 为了准备校庆庆典,学校招募了一些学生组成了一个方阵,准备在庆典上演出. 这个方阵是一个n*m的矩形,第i行 ...

  5. JZOJ 5438. 【NOIP2017提高A组集训10.31】Tree

    Description Input Output Sample Input 10 1 1 0 0 1 0 0 0 0 0 1 2 2 3 2 4 4 5 2 6 6 7 7 8 7 9 4 10 Sa ...

  6. JZOJ 5439. 【NOIP2017提高A组集训10.31】Calculate

    Description Input Output Data Constraint Solution 设前缀和 g[i][j]g[i][j] 表示 AA 为 ii .BB%A 为 jj 的数量. 这样就 ...

  7. JZOJ 5431. 【NOIP2017提高A组集训10.28】序列操作

    Description 一开始有n个非负整数hi,接下来会进行m次操作,第i次操作给出一个数c[i],要求你选出c[i]个大于零的数并将它们减去1. 问最多可以进行多少轮操作后无法操作(即没有c[i] ...

  8. JZOJ 5426. 【NOIP2017提高A组集训10.25】摘Galo

    Description 0v0在野外看到了一棵Galo树,看到食物的0v0瞪大了眼睛,变成了OvO. 这棵Galo树可以看做是一棵以1号点为根的n个点的有根数,除了根节点以外,每个节点i都有一个Gal ...

  9. JZOJ 5419. 【NOIP2017提高A组集训10.24】筹备计划

    Description 题目背景 热烈庆祝北京师范大学附属实验中学成立100周年! 问题描述 校庆筹备组的老师们正在寻找合适的地方来举办校庆庆典.学生们的位置和可以举办庆典的位置在x轴的正半轴取值在[ ...

最新文章

  1. 浙江大学计算机视频 百度云,浙江大学 数据结构与算法 全40讲 徐镜春 视频教程...
  2. 修改otrs notification master邮件通知地址和名称
  3. 启动模式 和 任务栈
  4. C语言 ungetc将变量存放的字符返回给stdin输入流
  5. JavaScript深入浅出第1课:箭头函数中的this究竟是什么鬼?
  6. PowerDesiGner数据库设计
  7. JDK 11,Tomcat卡在Deploying web application directory
  8. python 的内置方法zip()介绍
  9. 【毕业设计】基于Java的五子棋游戏的设计(源代码+论文)
  10. Pc端微信加群的测试用例
  11. 大数据系列1-规划安排
  12. people laugh and peale cry
  13. php遍历目录与文件夹的多种方法详解
  14. 树莓派摄像头,协议相关,人脸、车牌识别
  15. [入门篇]Linux操作系统fork子进程的创建以及进程的状态 超超超详解!!!我不允许有人错过!!!
  16. 如何做一个营销策划案前期
  17. ubuntu关机卡死
  18. LINQ To SQL與Transaction
  19. 8051 ,80C51 ,MCS-51这三者的区别
  20. 大话西游各服务器位置,大话西游各服务器移民历史

热门文章

  1. linux中使用ssh或scp时如何跳过RSA key fingerprint输入yes/no
  2. 正则化与L0、L1、L2范数祥解
  3. cuda-Block和Grid设定
  4. CentOS下双网卡单网关路由配置
  5. Centos6.5进入救援模式的方法
  6. QT技术应用_2D绘图(转)
  7. 高斯混合模型 GMM
  8. [云炬创业管理笔记]第五章打磨最有效的商业模式测试4
  9. IP插件:批量替换论文图片
  10. like mysql 相反_Mysql数据库的常用操作