最近研究路径空间,稍微总结一下,以后继续补充:

题意有没说楚清的...两点间最多一条路径....

先用并查集检查无向图否是有环...

若干个无环的无向图就是一丛林了...

那么目题转化为在一棵树上找最长的路径....绝大部分都是叶子到叶子的离距(除非根节点只有一个孩子..那么最长的多是根到某个叶子结点)

在丛林的每课树上做DP..序顺从叶子到根..

dp[i]..代表i点为根的子树到叶子的最长路径长度....

这题空间上要求较为高...数组尽可能的少开...高效用利空间....

Program:

每日一道理
成熟是一种明亮而不刺眼的光辉,一种圆润而不腻耳的音响,一种不需要对别人察颜观色的从容,一种终于停止了向周围申诉求告的大气,一种不理会哄闹的微笑,一种洗刷了偏激的淡漠,一种无须声张的厚实,一种并不陡峭的高度。
//http://acm.hdu.edu.cn/showproblem.php?pid=4514
#include<iostream>
#include<stdio.h>
#include<string.h>
#include<cmath>
#include<algorithm>
#include<map>
#include<set>
#include<queue>
#define ll long long
#define oo 1000000001
#define MAXN1 1000002
#define MAXN2 100002
using namespace std;
struct node1
{int y,w,next;
}line[2*MAXN1];
int n,m,father[MAXN2],p[MAXN2],_next[MAXN2],dp[MAXN2]; // p记载每一个点的度
queue<int> myqueue;
int getfather(int x)
{ if (father[x]==x) return x;return father[x]=getfather(father[x]);
}
void doit()
{int i,x,k,ans; ans=0;while (!myqueue.empty()) myqueue.pop();  memset(dp,0,sizeof(dp));for (i=1;i<=n;i++)if (p[i]==1) myqueue.push(i);while (!myqueue.empty()){x=myqueue.front();myqueue.pop(); k=_next[x];while (k){ if (p[line[k].y]){p[line[k].y]--;p[x]--;if (p[line[k].y]==1)  myqueue.push(line[k].y); if (ans<dp[line[k].y]+dp[x]+line[k].w)ans=dp[line[k].y]+dp[x]+line[k].w;if (dp[line[k].y]<dp[x]+line[k].w)dp[line[k].y]=dp[x]+line[k].w;} k=line[k].next;}}printf("%d\n",ans);return;
}
int main()
{     freopen("input.txt","r",stdin);   freopen("output.txt","w",stdout);  int x,y,w,i; bool f;while (~scanf("%d%d",&n,&m)){memset(_next,0,sizeof(_next));memset(p,0,sizeof(p));for (i=1;i<=n;i++) father[i]=i;f=false;for (i=1;i<=m;i++){scanf("%d%d%d",&x,&y,&w);if (getfather(x)==getfather(y)) f=true;father[father[x]]=father[y];line[i*2-1].next=_next[x];_next[x]=i*2-1;line[i*2-1].y=y; line[i*2-1].w=w;     line[i*2].next=_next[y];_next[y]=i*2;line[i*2].y=x;  line[i*2].w=w;  p[x]++,p[y]++;                }m*=2;if (f) printf("YES\n");else doit();}return 0;
}

文章结束给大家分享下程序员的一些笑话语录: 话剧:程序员过沟
  本剧内容纯属虚构,如有雷同……HEHE……俺也没办法了。
  话说某市街道改建,某某软件公司门口横七竖八挖了几条大沟。一群程序员(SDK程序员赵某,VB程序员钱某,VC程序员孙某,DELPHI程序员李某)下班从公司里出来,看到门前的几条沟,于是各显神通……门前第一条沟也就半米来宽,SDK程序员赵某二话没说,轻轻一跃跳了过去,看到其它人纷纷把随身携带的公文包(类库)横在沟上踩着过沟,不屑地说,这么小一条沟,犯得着小题大做用那个吗?看我多么轻松多么洒脱多么……多么……(众人皆怒目横视之……)
  接着第二条沟有点宽度。SDK程序员赵某还是还是一马当先,飞跃而起……不好,还差一点才到……幸好凭着多年的(跳远?编程?)经验,单手抓住沟沿,颤巍巍地爬了上来,嘴里还念念有词“高手就是高手啊,虽然差一点就……不过毕竟……HEHE……跳远是过沟的基础嘛,有基础(SDK)就有一切的说……”(众人作瞠目结舌状……)看到别人跳过去了,可自己又跳不了那么远,只好再想办法了……VB程序员钱某,DELPHI程序员李某打开手提,连上手机,开始上网找可供过沟的控件……VC程序员孙某却不慌不忙,打开公文包,把几块衬板拆了下来,然后三下五除二拼成一个简易木桥……“虽然这几个板子(类)做得不怎么样,不过先把这个项目应付过去,有时间我自己做一个好了……”于是踩着板子过了沟。
  这时钱某和李某也分别找到了合适的东东。钱某找到的是“钢丝绳.ocx”,安装简单,使用方便,拉出一头,对孙某说“大虾,顺手拉兄弟一把……”,于是把绳子系在沟两边的绿化树木上,踩着钢丝就过了沟。刚刚站稳就四方作揖,“小生这里有礼了”。这时一戴着黄袖圈的老太太跳了出来,抓住钱某,“破坏绿化树木,罚款XXXX元,交钱,交钱,交钱!”(老人家作双枪老太婆怒视伪军状
……钱某被逼无奈,只好边掏钱,边对着后台叫道“导演,我这可是因公牺牲,不给个烈士称号也得报销”,后台一个臭鸡蛋飞出,“叫什么叫,我这个月的粮饷还不知哪里去领呢,都什么时代了,你不下岗都不错了……”)
  李某看着刚刚好不容易从台湾拖回来的“铝条.ZIP”

路径空间HDOJ 4514 - 湫湫系列故事——设计风景线 并查集+树型DP相关推荐

  1. Hdu 4514 湫湫系列故事——设计风景线

    湫湫系列故事--设计风景线 Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others) Total ...

  2. hdu-----(4514)湫湫系列故事——设计风景线(树形DP+并查集)

    湫湫系列故事--设计风景线 Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others) To ...

  3. HDU 4514 湫湫系列故事——设计风景线 (并查集)

    判断有没有环路,我个人认为还是并查集效率要高,而且复杂度要比dfs低,性价比很好 这道题的要求,第一判断是否有环,如果没有环,就输出最长的路径 我们可以想到一个无向图如果没有环的话,一定就是两种形态, ...

  4. 刷题总结——湫湫系列故事——设计风景线(hdu4514 并差集判环+树的直径)

    题目: 随着杭州西湖的知名度的进一步提升,园林规划专家湫湫希望设计出一条新的经典观光线路,根据老板马小腾的指示,新的风景线最好能建成环形,如果没有条件建成环形,那就建的越长越好.    现在已经勘探确 ...

  5. [HDOJ 4506] 小明系列故事――师兄帮帮忙

    题目描述 小明系列故事――师兄帮帮忙 解题思路 找规律,可知每经过n个单位时间,数字又会变回来. 因此只要取余,得到每个数字在t时间后的位置. 结合快速幂就可以直接输出答案了. 参考代码 #inclu ...

  6. HDU - 4532 湫秋系列故事――安排座位

    Description 为了给腾讯公司找到更多优秀的人才,HR湫秋最近去某高校组织了一次针对该校所有系的聚会,邀请了每个系的一些优秀学生来参加. 作为组织者,湫秋要安排他们的座位.这并不是一件很简单的 ...

  7. 湫秋系列故事——安排座位

    Problem Description 为了给腾讯公司找到更多优秀的人才,HR湫秋最近去某高校组织了一次针对该校所有系的聚会,邀请了每个系的一些优秀学生来参加. 作为组织者,湫秋要安排他们的座位.这并 ...

  8. HDU-4532 湫秋系列故事——安排座位 组合数学DP

    题意:有来自n个专业的学生,每个专业分别有ai个同学,现在要将这些学生排成一行,使得相邻的两个学生来自不同的专业,问有多少种不同的安排方案. 分析:首先将所有专业的学生视作一样的,最后再乘以各自学生的 ...

  9. HDU 4539郑厂长系列故事――排兵布阵(状压DP)

    HDU 4539  郑厂长系列故事――排兵布阵 基础的状压DP,首先记录先每一行可取的所哟状态(一行里互不冲突的大概160个状态), 直接套了一个4重循环居然没超时我就呵呵了 1 //#pragma ...

最新文章

  1. linux安装apache的纠结过程
  2. VMware 克隆网卡无法启动
  3. 单片机c语言调用函数费时,下头函数,只要被调用就会导致单片机死机,请大家帮忙分析...
  4. WINCE蓝牙应用开发方式
  5. Android 第十六课 使用LitePal查询数据
  6. Linq 下的 Take() 方法内部机制是怎样的?
  7. asterisk架构
  8. c语言黑白棋程序设计报告,C语言课程设计黑白棋
  9. Java学习之FileInputStream与FileReader的区别
  10. [CareerCup] 17.1 Swap Number In Place 互换位置
  11. 从零开始学编程之我见
  12. 使用Grafana+loki+promtail入门级部署分布式日志系统(windows环境)
  13. 微信投票显示服务器异常,为何微信投票显示账号异常
  14. ABSOLUTE评估肿瘤纯度
  15. 三层交换技术..使用三层交换技术实现VLAN间通信
  16. Daily Scrum Meeting 11.13
  17. 记录关于利用txt文件划分训练集、测试集与验证集
  18. 代码精进之路-读后感
  19. free Code Camp Slasher Flick(截断数组)
  20. avi文件格式详解(一)

热门文章

  1. 从 JavaScript 到 TypeScript 6 - Vue 引入 TypeScript
  2. C++ STL 学习笔记__(6)优先级队列priority_queue基本操作
  3. [转]php返回json数据中文显示的问题
  4. 【重点!DP】LeetCode 97. Interleaving String
  5. 【字符串全排列】LeetCode 567. Permutation in String
  6. GFW Rule list
  7. tp5 mkdir(): Permission denied 问题
  8. RectTransformUtility.ScreenPointToWorldPointInRectangle使用说明
  9. 课设2--线性表的操作
  10. Nginx配置优化解读