hdu 1598 暴力+并查集
#include<stdio.h>
#include<stdlib.h>
#define N 300
int pre[N];
int find(int u) {
if(u!=pre[u])
pre[u]=find(pre[u]);
return pre[u];
}
struct node {
int u,v,speed;
}ma[1100];
int cmp(const void *a,const void *b) {
return (*(struct node *)a).speed-(*(struct node *)b).speed;
}
int main() {
int q,max,min,i,j,s,t,n,m,cha,flag,a,b;
while(scanf("%d%d",&n,&m)!=EOF) {
for(i=0;i<m;i++)
scanf("%d%d%d",&ma[i].u,&ma[i].v,&ma[i].speed);
scanf("%d",&q);
qsort(ma,m,sizeof(ma[0]),cmp);
while(q--) {
scanf("%d%d",&s,&t);
cha=1000000;
for(i=0;i<m;i++) {
flag=0;
min=1000000;
max=-1;
for(j=1;j<=n;j++)
pre[j]=j;
for(j=i;j<m;j++) {
a=find(ma[j].u);
b=find(ma[j].v);
if(a!=b) {
pre[a]=b;
if(max<ma[j].speed)max=ma[j].speed;
if(min>ma[j].speed)min=ma[j].speed;
}
if(find(s)==find(t)) {flag=1;break;}
}
if(max-min<cha&&flag==1)
cha=max-min;
}
if(cha==1000000)printf("-1\n");
else printf("%d\n",cha);
}
}
return 0;
}
最新文章
- Android 剪贴板详解
- EF 分页查询优化
- 修改远程桌面连接端口3389,RDP-Tcp的portnumber要用十六进制修改
- Git分布式版本管理工具基本使用方法
- SSM项目配置随笔
- Erlang在Windows上开发环境搭建全过程讲解目录
- System.DateTimeOffset 中新增的Unix 时间戳方法
- SharePoint 中关于event receivers的讨论
- Xamarin Android长度单位区别
- Android adb不是内部或外部命令 (转)
- 第二期培训(PING问题定位指导)心得
- spring之构造注入
- 引擎设计跟踪: 为什么Blade可以用Clang编译
- Google开源软负载seesaw
- 在Ajax返回多个值
- 伪Ap接入点
- 我的C语言编程风格
- 简单xmlrpc服务器
- Unicode,ISO-8859-1,GBK,UTF-8编码及相互转换(转载)
- DICOM医学图像处理:WEB PACS初谈
热门文章
- EF学习笔记——生成自定义实体类
- 协议-网络-安全协议:SSH(安全外壳协议)
- python请求服务器时如何隐藏User-Agent
- git上
- POJ 3630 trie树
- C - New Year Candles
- 跳出双重for循环的案例__________跳出了,则不再执行标签ok下的for循环代码
- C#动态验证码
- HTTPS的中那些加密算法
- JavaScript 继承代码中,B.prototype = new A(); 的含义是什么?[转自知乎]