HDU4514
来源:互联网 发布:2017全国火灾数据统计 编辑:程序博客网 时间:2024/05/21 08:00
树的直径
并查集判环,SPFA判环一直T。。。。(写的太挫了估计。。。)
#include <cstdio>#include <cstring>#include <iostream>#include <vector>#include <queue>using namespace std;int const MAXN = 100010;typedef struct EDGE{ int to; int w;}Edge;vector <Edge> edge[MAXN];queue <int> q;int cnt[MAXN],vis[MAXN],dis[MAXN];int father[MAXN];int n,m;void Init(){ for(int i = 0;i < MAXN;i++){ father[i] = i; edge[i].clear(); }}void Add(int u,int v,int w){ Edge temp; temp.w = w; temp.to = v; edge[u].push_back(temp); temp.to = u; edge[v].push_back(temp);}int Find(int x){ int temp,y; y = x; while(y != father[y]){ y = father[y]; } while(x != father[x]){ temp = father[x]; father[x] = y; x = temp; } return y;}void Union(int u,int v){ int uu = Find(u); int vv = Find(v); if(uu != vv) father[uu] = vv;}void Bfs(int start){ while(!q.empty()){q.pop();}; memset(vis,0,sizeof(vis)); memset(dis,-1,sizeof(dis)); vis[start] = 1; dis[start] = 0; q.push(start); while(!q.empty()){ int top = q.front(); q.pop(); for(int i = 0;i < edge[top].size();i++){ int to = edge[top][i].to; if(!vis[to]){ vis[to] = 1; dis[to] = dis[top] + edge[top][i].w; q.push(to); } } }}int Count(int start){ int u = start, maxx = 0; Bfs(u); for(int i = 1;i <= n;i++){ if(dis[i] > maxx){ u = i; maxx = dis[i]; } } Bfs(u); maxx = 0; for(int i = 1;i <= n;i++){ if(dis[i] > maxx) maxx = dis[i]; } return maxx;}int main(){ while(~scanf("%d%d",&n,&m)){ Init(); int u,v,w,flag = 0; for(int i = 0;i < m;i++){ scanf("%d%d%d",&u,&v,&w); Add(u,v,w); if(Find(u) == Find(v)) flag = 1; Union(u,v); } if(flag) printf("YES\n"); else{ printf("%d\n",Count(u)); } } return 0;}
0 0
- hdu4514
- HDU4514
- hdu4514(求图中最长的路径)
- 腾讯编程马拉松第二场(HDU4510 HDU4514)
- hdu4514 湫湫系列故事——设计风景线
- HDU4514(非连通图的环判断与图中最长链)
- HDU4514(非连通图的环判断与图中最长链)
- HDU4514湫湫系列故事——设计风景线(并查集判环+最长直径)
- hdu4514 湫湫系列故事——设计风景线(坑,树不止一个)
- HDU4514湫湫系列故事——设计风景线(树的直径)
- hdu4514 湫湫系列故事——设计风景线(并查集+树形dp)
- hdu4514 湫湫系列故事——设计风景线 (树形DP+并查集)
- 2013腾讯编程马拉松初赛第2场(3月22)(HDU 4510 HDU4511 HDU4512 HDU4513 HDU4514)
- android滚动TextView设计
- cocos2dx坐标系及节点尺寸
- 【蓝桥杯练习系统】 入门训练 序列求和
- android adb shell 命令大全
- CentOS-6.5-x86_64 最小化安装,共安装了多少个软件包,是那些软件包?
- HDU4514
- [Python]网络爬虫(三):异常的处理和HTTP状态码的分类
- android中Invalidate和postInvalidate的区别
- 数据结构代码
- Sql server 2005安装时ASP.Net版本注册要求警告的解决办
- 排序(二)简单选择排序、直接插入排序、希尔排序
- [Python]网络爬虫(四):Opener与Handler的介绍和实例应用
- C++中引用传递与指针传递区别
- 【动态规划】0-1背包问题