hdu4514(非连通图的环判断与图中最长链)(树的直径)
湫湫系列故事——设计风景线
现在已经勘探确定了n个位置可以用来建设,在它们之间也勘探确定了m条可以设计的路线以及他们的长度。请问是否能够建成环形的风景线?如果不能,风景线最长能够达到多少?
其中,可以兴建的路线均是双向的,他们之间的长度均大于0。
Input 测试数据有多组,每组测试数据的第一行有两个数字n, m,其含义参见题目描述;
接下去m行,每行3个数字u v w,分别代表这条线路的起点,终点和长度。
[Technical Specification]
1. n<=100000
2. m <= 1000000
3. 1<= u, v <= n
4. w <= 1000
Output 对于每组测试数据,如果能够建成环形(并不需要连接上去全部的风景点),那么输出YES,否则输出最长的长度,每组数据输出一行。
Sample Input
3 3
1 2 1
2 3 1
3 1 1
Sample Output
YES 题解:就是判环,如果无环的话就求出树的直径,如果有环的话就输出YES,就可以了,记录一个最
长路,和次长路,就ok了。
#include<cstdio>
#include<algorithm>
#include<iostream>
#include<cmath>
#include<cstring>
#include<cstdlib>
#define N 100007
#define M 1000007
using namespace std; int n,m,ans;
int cnt,head[N],Next[M*],rea[M*],val[M*];
int f[N][],fa[N];
bool vis[N]; void Add(int u,int v,int fee){Next[++cnt]=head[u],head[u]=cnt,rea[cnt]=v,val[cnt]=fee;}
int find(int num)
{
if (fa[num]!=num) return fa[num]=find(fa[num]);
return fa[num];
}
void dfs_solve(int u,int fa)
{
for (int i=head[u];i!=-;i=Next[i])
{
int v=rea[i],fee=val[i];
if (v==fa||vis[v]) continue;
vis[v]=;dfs_solve(v,u);
if (f[v][]+fee>f[u][])
{
f[u][]=f[u][];
f[u][]=f[v][]+fee;
}
else if (f[v][]+fee>f[u][]) f[u][]=f[v][]+fee;
}
ans=max(ans,f[u][]+f[u][]);
}
int main()
{
while (~scanf("%d%d",&n,&m))
{
ans=cnt=;
bool flag=;
memset(vis,,sizeof(vis));
memset(head,-,sizeof(head));
memset(f,,sizeof(f));
for (int i=;i<=n;i++) fa[i]=i;
for (int i=,x,y,z;i<=m;i++)
{
scanf("%d%d%d",&x,&y,&z);
if (flag) continue;
int u=find(x),v=find(y);
if (u==v)
{
flag=;
printf("YES\n");
}
else fa[u]=v;
Add(x,y,z),Add(y,x,z);
}
if (flag) continue;
ans=-;
for (int i=;i<=n;i++)
{
if (!vis[i])
{
vis[i]=;
dfs_solve(i,-);
}
}
printf("%d\n",ans);
}
}
hdu4514(非连通图的环判断与图中最长链)(树的直径)的更多相关文章
- HDU4514(非连通图的环判断与图中最长链)
题目:设计风景线 题意:给定一个无向图,图可能是非连通的,如果图中存在环,就输出YES,否则就输出图中最长链的长度. 分析:首先我们得考虑这是一个无向图,而且有可能是非连通的,那么就不能直接像求树那样 ...
- poj2762 判断一个图中任意两点是否存在可达路径 也可看成DAG的最小覆盖点是否为1
Going from u to v or from v to u? Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 179 ...
- HDU4514 湫湫系列故事——设计风景线 ——树的直径/树形dp+判环
中文题面,给出一个图,问能不能成环,如果可以就输出YES.否则输出该树的直径. 这里的判环我们用路径压缩的并查集就能很快的判断出来,可以在输入的同时进行判断.这题重点就是求树的直径. 树直径的性质可以 ...
- POJ 1985.Cow Marathon-树的直径-树的直径模板(BFS、DFS(vector存图)、DFS(前向星存图))
Cow Marathon Time Limit: 2000MS Memory Limit: 30000K Total Submissions: 7536 Accepted: 3559 Case ...
- 【C++】判断一个图是否有环 无向图 有向图(转载)
没有找到原文出处,请参考一下链接: http://www.cnblogs.com/hiside/archive/2010/12/01/1893878.html http://topic.csdn.ne ...
- POJ 1860 Currency Exchange(如何Bellman-Ford算法判断图中是否存在正环)
题目链接: https://cn.vjudge.net/problem/POJ-1860 Several currency exchange points are working in our cit ...
- 判断强联通图中每条边是否只在一个环上(hdu3594)
hdu3594 Cactus Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) T ...
- 图结构练习——判断给定图是否存在合法拓扑序列(dfs算法(第一个代码),邻接矩阵(前两个代码),邻接表(第三个代码))
sdut 2140 图结构练习——判断给定图是否存在合法拓扑序列 Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^ 题目描述 给定一个有向图 ...
- javascript实现有向无环图中任意两点最短路径的dijistra算法
有向无环图 一个无环的有向图称做有向无环图(directed acycline praph).简称DAG 图.DAG 图是一类较有向树更一般的特殊有向图, dijistra算法 摘自 http://w ...
随机推荐
- 所有DOM元素加载之前执行的页面加载事件[jquery]
<script type="text/javascript"> (function() { alert("DOM还没加载"); })(jQuery) ...
- #pragma使用分析
#pragma简介 #pragma用于指示编译器完成一些特定的动作 #pragma所定义的很多指示字是编译器特有的 #pragma在不同的编译器间是不可移植的 预处理器将忽略它不认识的#pragma指 ...
- http://bbs.chinaunix.net/thread-1463276-1-1.html
http://bbs.chinaunix.net/thread-1463276-1-1.html
- 如何修改开发板主频--迅为iMX6UL开发板
平台:iMX6UL开发板 iMX6UL开发板 可以在文件系统中通过命令修改 CPU 运行的主频.如下图所示,使用命令“cat /sys/devices/system/cpu/cpu ...
- 穷举(四):POJ上的两道穷举例题POJ 1411和POJ 1753
下面给出两道POJ上的问题,看如何用穷举法解决. [例9]Calling Extraterrestrial Intelligence Again(POJ 1411) Description A mes ...
- python爬虫---实现项目(一) Requests爬取HTML信息
上面的博客把基本的HTML解析库已经说完了,这次我们来给予几个实战的项目. 这次主要用Requests库+正则表达式来解析HTML. 项目一:爬取猫眼电影TOP100信息 代码地址:https://g ...
- 【2019.5.19】接口测试及python基础(一)
一.接口 1.什么是接口: 简单的说,接口就是从数据库获取数据. 2.前端和后端: 2.1前端client: 对于web来说,打开的网页,我们所看到的就是前端,前端语言包括html.JS.CSS: ...
- zabbix auto registration
1./etc/zabbix/zabbix_agent.conf serverActive=zabbix server ip 2.frontend configuration>actions> ...
- xcode中自定义log打印
打印内容包括 在哪个文件中 ? 在哪个方法中? 将要执行什么操作? // 此打印实现前提: // 1.在.pch文件中实现自定义log打印方法,log名换为LCLog // 2.定义一个宏obje ...
- hdu3094 A tree game
题目描述 题解: 树上删边. $SG[u]$^=$SG[son[u]]+1$ 代码: #include<cstdio> #include<cstring> ; template ...