贪心思想的Kruscal:先对边排序,再从第一条边开始,一旦start point 和 end poiont 连上,就break

 #include <stdio.h>
#include <iostream>
#include <algorithm>
const int N = ;
const int inf = ;
using namespace std; struct Road{
int st,ed,pd; //起点,终点、速度
}road[N];
int cmp(const Road &p,const Road &q){
return p.pd<q.pd;
}
int root[N];
int n,m;
void init(){
for(int i = ; i <= n; i++){
root[i] = -;
}
}
int Find(int x){
int s = x;
while(root[s] >= ){ //一直查到parent[s]为负数(此时s为根结点)为止
s = root[s];
}
while(s != x){ //路径压缩,优化,便于后续的查找操作加速
int temp = root[x];
root[x] = s;
x=temp;
}
return s;
}
void Union(int R1,int R2){
int r1 = Find(R1);
int r2 = Find(R2);
if(r1 != r2){
root[r2] = r1;
}
}
int main(){
int _case;
while(scanf("%d%d",&n,&m)!=EOF){
for(int i = ; i <= m; i++){\
scanf("%d%d%d",&road[i].st,&road[i].ed,&road[i].pd);
}
sort(road+, road+ + m, cmp); //calculating form 1
scanf("%d",&_case);
while(_case--){
int st,ed;
int min = inf;
scanf("%d%d",&st,&ed);
for(int i = ; i <= m; i++){
init();
for(int j = i; j <= m; j++){
Union(road[j].st, road[j].ed);
if(Find(st) == Find(ed)){
int ans = road[j].pd - road[i].pd; //舒适度
min = ans < min ? ans : min;
break;
}
}
}
if(min == inf)
printf("-1\n");
else
printf("%d\n",min);
}
}
return ;
}

HDOJ 1598 Kruscal的更多相关文章

  1. HDOJ 1009. Fat Mouse' Trade 贪心 结构体排序

    FatMouse' Trade Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) ...

  2. HDOJ 2317. Nasty Hacks 模拟水题

    Nasty Hacks Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Tota ...

  3. HDOJ 1326. Box of Bricks 纯水题

    Box of Bricks Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) To ...

  4. HDOJ 1004 Let the Balloon Rise

    Problem Description Contest time again! How excited it is to see balloons floating around. But to te ...

  5. hdoj 1385Minimum Transport Cost

    卧槽....最近刷的cf上有最短路,本来想拿这题复习一下.... 题意就是在输出最短路的情况下,经过每个节点会增加税收,另外要字典序输出,注意a到b和b到a的权值不同 然后就是处理字典序的问题,当松弛 ...

  6. HDOJ(2056)&HDOJ(1086)

    Rectangles    HDOJ(2056) http://acm.hdu.edu.cn/showproblem.php?pid=2056 题目描述:给2条线段,分别构成2个矩形,求2个矩形相交面 ...

  7. 继续node爬虫 — 百行代码自制自动AC机器人日解千题攻占HDOJ

    前言 不说话,先猛戳 Ranklist 看我排名. 这是用 node 自动刷题大概半天的 "战绩",本文就来为大家简单讲解下如何用 node 做一个 "自动AC机&quo ...

  8. hdu1162(最小生成树 prim or kruscal)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1162 意义:给出一些点,用线问使所有点直接或间接连通,需要多长: 思路:裸最小生成树: 法1: pri ...

  9. 最近点对问题 POJ 3714 Raid && HDOJ 1007 Quoit Design

    题意:有n个点,问其中某一对点的距离最小是多少 分析:分治法解决问题:先按照x坐标排序,求解(left, mid)和(mid+1, right)范围的最小值,然后类似区间合并,分离mid左右的点也求最 ...

随机推荐

  1. probing元素

    https://msdn.microsoft.com/zh-cn/library/823z9h8w(v=vs.85).aspx 指定加载程序集时公共语言运行库要搜索的应用程序基子目录. <con ...

  2. JavaScript中的字符串

    JavaScript字符串是JavaScript最重要的部分,可能比任何其他的数据类型都更多的用到. 所有的JavaScript对象共享的方法之一就是toString(). 字符串对象叫做String ...

  3. 字节流复制mp3文件(带缓冲区)

    //自定义的缓冲区 import java.io.*; class  MyBufferedInputStream{    private byte[] buf = new byte[1024]; pr ...

  4. 查看Oracle有哪些表或者视图

    转自:http://www.2cto.com/database/201211/167577.html 1.查询当前用户下,有哪些表 Sql代码   SELECT * FROM user_tables ...

  5. PHP学习笔记14-操作session

    PHP会话管理图: 创建index: <?php /** * Created by PhpStorm. * User: Administrator * Date: 2015/7/2 * Time ...

  6. Python网络编程——修改套接字发送和接收的缓冲区大小

    很多情况下,默认的套接字缓冲区大小可能不够用.此时,可以将默认的套接字缓冲区大小改成一个更合适的值. 1. 代码 # ! /usr/bin/env python # -*- coding: utf-8 ...

  7. struts文件上传和下载

    文件上传 jsp中 <a href="/file/new.action">文件上传案例</a> fileaction中 @Override public S ...

  8. Android 第一篇——环境搭建

    下载Android SDK 下载eclipse 在线安装SDK

  9. Windbg调试命令详解(1)

    转载注明>> [作者:张佩][镜像:http://www.yiiyee.cn/Blog] 1. 概述 用户成功安装微软Windows调试工具集后,能够在安装目录下发现四个调试器程序,分别是 ...

  10. Android事件机制全然解析

    android事件是一级一级传递的,假设父控件不拦截.就传给子控件,假设父控件想要消费事件也就是拦截事件的话,须要重写这种方法 public boolean onInterceptTouchEvent ...